Tag: simpledateformat

java.text.ParseException:无法解析的日期:yyyy-MM-dd HH:mm:ss.SSSSSS

我得到以下代码的ParseException String dateStr = “2011-12-22 10:56:24.389362”; String formatStr = “yyyy-MM-dd HH:mm:ss.SSSSSS”; Date testDate = null; SimpleDateFormat sdf= new SimpleDateFormat(formatStr); sdf.setLenient(false); testDate = sdf.parse(dateStr); System.out.println(“CHECK DATE ” + sdf.format(testDate)); Exception in thread “main” java.text.ParseException: Unparseable date: “2011-12-22 10:56:24.389362” at java.text.DateFormat.parse(DateFormat.java:337) 如果我注释掉行sdf.setLenient(false) ,那么我会看到输出的时间差CHECK DATE 2011-12-22 11:02:53.000362 我究竟做错了什么??

使用可变空格解析日期

我使用Joda来解析日期并使用不使用前导零的格式,例如: Mon Nov 20 14:40:36 2006 Mon Nov 6 14:40:36 2006 请注意,dayOfMonth字段用空白填充。 目前我似乎必须使用两种不同的格式,如果一个失败则重新分析 “EEE MMM dd HH:mm:ss yyyy” “EEE MMM d HH:mm:ss yyyy” 是否有单一格式(或API开关)处理这两种情况? (SimpleDateFormat的答案是一样的 – 我不使用它?)

SimpleDateFormat无法解析超过4位数的毫秒数

我想解析一个时间戳,像这样 – “2016-03-16 01:14:21.6739” 。 但是当我使用SimpleDateFormat来解析它时,我发现它输出了一个不正确的解析值。 它将隐藏6739毫秒到6秒,剩下739毫秒。 它将日期转换为此格式 – Wed Mar 16 01:14:27 PDT 2016 。 为什么秒部分从21秒变为27秒(增加6秒?)。 以下是我的代码片段: final SimpleDateFormat sf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.SSSS”); String parsedate=”2016-03-16 01:14:21.6739″; try { Date outputdate = sf.parse(parsedate); String newdate = outputdate.toString(); //==output date is: Wed Mar 16 01:14:27 PDT 2016 System.out.println(newdate); } catch (ParseException e) { // TODO […]

Ubuntu上的非法模式字符’Y’

我使用这种模式SimpleDateFormat format = new SimpleDateFormat(“YYYY-MM-dd HH:mm:ss”); 在Windows中它可以工作,但是当尝试使用Ubuntu 10.04时,它会显示exceptionplay.exceptions.JavaExecutionException: Illegal pattern character ‘Y’ 。 我为此搜索解决方案并发现年份模式必须更改为小写: SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); 它的工作原理。 任何人都可以告诉我这背后的原因在Windows工作,但在Ubuntu如果我使用’Y’而不是’y’不起作用? 注意: 播放-1.2.3 JRE: Windows: java version “1.7.0_03” Java(TM) SE Runtime Environment (build 1.7.0_03-b05) Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode, sharing) Ubuntu: java version “1.6.0_31” Java(TM) SE Runtime Environment (build 1.6.0_31-b04) Java […]

使用SimpleDateFormat解析日期不一致

我真的在这个问题上摸不着头脑。 我一直在使用SimpleDateFormat并没有麻烦,但是现在,使用SimpleDateFormat来解析日期(仅有时)只是完全错误。 特别: SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); Date date = sdf.parse(“2009-08-19 12:00:00”); System.out.print(date.toString()); 打印字符串Wed Aug 19 00:00:00 EDT 2009 。 有没有搞错? – 它甚至不会一直解析到错误的日期! 更新:这很好地修复了它。 难道你不知道,在其他一些地方也被误用了。 得爱调试其他人的代码:)

当str = 2011/12 / 12aaaaaaaaa时,SimpleDateFormat parse(string str)不会抛出exception?

这是一个例子: public MyDate() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(“yyyy/MM/d”); sdf.setLenient(false); String t1 = “2011/12/12aaa”; System.out.println(sdf.parse(t1)); } 2011/12 / 12aaa不是有效的日期字符串。 但是,该function打印“2011年12月12日00:00:00 PST”,并且不会抛出ParseException。 谁能告诉我如何让SimpleDateFormat将“2011/12 / 12aaa”视为无效的日期字符串并抛出exception?

Java“周年”如何真正起作用?

这开始是一个简单的错误:我在SimpleDateFormat对象的格式字符串中使用了YYYY而不是yyyy 。 但是我对使用错误格式字符串的测试结果感到困惑。 这段代码: @Test public void whatTheHell() { try { SimpleDateFormat sdf = new SimpleDateFormat(“MM/dd/YYYY”); Date d1 = sdf.parse(“01/07/2016”); Date d2 = sdf.parse(“02/08/2016”); Date d3 = sdf.parse(“11/29/2027”); System.out.println(d1.toString()); System.out.println(d2.toString()); System.out.println(d3.toString()); } catch (ParseException pe) { fail(“ParseException: ” + pe.getMessage()); } } 产生这个输出: Sun Dec 27 00:00:00 PST 2015 Sun Dec 27 00:00:00 PST 2015 […]

时区,日历和SimpleDateFormat的奇怪问题

我们考虑以下代码: SimpleDateFormat sdf = new SimpleDateFormat(“HH:mm:ss dd/MM/yyyy”, Locale.US); long start = sdf.parse(“10:30:00 30/09/2009”).getTime(); long end = sdf.parse(“10:30:00 30/10/2009”).getTime(); Calendar c = Calendar.getInstance(Locale.US); c.setTimeInMillis(start); System.out.println(“Start = ” + c.getTime()); c.setTimeInMillis(end); System.out.println(” End = ” + c.getTime()); 运行此代码段时,我有以下输出: Start = Wed Sep 30 10:30:00 CEST 2009 End = Fri Oct 30 10:30:00 CET 2009 为什么我会得到不同的时区? 请注意,如果我在8月设置第一个日期而在9月设置第二个日期,则输出将在两种情况下显示相同的时区: long […]

android java解析日期来自字符串

在Android应用程序中,我试图从字符串解析日期以找到两次之间的差异。 SimpleDateFormat dateFormatDateAndTime = new SimpleDateFormat(“ddMMyyyyHHMM”); Date startDateTime = dateFormatDateAndTime.parse(“060420150134”); Log.v(TAG, “startDateTime: ” + startDateTime); //Fri Oct 06 01:00:00 GMT+05:30 2017 所以,我必须解析060420150134以便我得到06 Apr 2015 01:34 ,为此我的格式是ddMMyyyyHHMM 但是我到这里Fri Oct 06 01:00:00 GMT+05:30 2017 所以我做错了什么? 如何在这里解析?

Java SimpleDateFormat解析错误的日期

我正在尝试使用SimpleDateFormat的解析函数将String转换为Date SimpleDateFormat sdf = new SimpleDateFormat(“dd-MM-YYYY”); String strInput1 = “29-04-2014”; System.out.println(“string 1: ” + strInput1); Date date1 = new Date(); try { date1 = sdf.parse(strInput1); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(“date 1: ” + date1.toString()); String strInput2 = sdf.format(date1); System.out.println(“string 2: ” +strInput2); Date date2 = new Date(); […]