ParseException:不可解析的日期异常
谢谢。
系统默认的区域差异。
SimpleDateFormat sdf = new SimpleDateFormat(“MMM d,yyyy h:mm:ss a”,Locale.ENGLISH);
得到解决。
字符串日期错误
字符串: Feb 13, 2017 10:25:43 AM
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy h:mm:ss a");
或MMM d, yyyy h:mm:ss a
, MMM d, yyyy hh:mm:ss a
, MMM dd, yyyy h:mm:ss a
, MMM dd, yyyy hh:mm:ss a
, MMM dd, yyyy H:mm:ss a
, MMM dd, yyyy HH:mm:ss a
...等
ParseException ::::: Unparseable date:“Feb 13,2017 10:25:43 AM”
plz帮助。
TL;博士
LocalDateTime.parse(
"Feb 13, 2017 10:25:43 AM" ,
DateTimeFormatter.ofPattern( "MMM d, uuuu hh:mm:ss a" , Locale.US )
)
2017-02-13T10:25:43
java.time
您正在使用现在已经存在的麻烦的旧日期时间类,并被java.time类取代。
指定格式模式以匹配您的输入。 请注意,我们通过Locale
来指定翻译月份名称等所使用的人类语言和文化规范。
String input = "Feb 13, 2017 10:25:43 AM" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM d, uuuu hh:mm:ss a" , Locale.US ) ;
您的输入字符串缺少任何时区或偏离UTC的指示符。 因此解析为LocalDateTime
。
LocalDateTime ldt = LocalDateTime.parse( input , f );
ldt.toString():2017-02-13T10:25:43
顺便说一句,如果您的输入在一年后有逗号,则可以使用自动本地化的格式化程序进行分析,而不必费心定义格式化模式。 这个逗号显然是美国的常态(至少)。
String input = "Feb 13, 2017, 10:25:43 AM" ; // With a comma after year, apparently the norm in the United States.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM ).withLocale( Locale.US )
LocalDateTime ldt = LocalDateTime.parse( input , f );
关于java.time
java.time框架内置于Java 8及更高版本中。 这些类取代了诸如java.util.Date
, Calendar
和SimpleDateFormat
等麻烦的旧式遗留日期时间类。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。 并搜索堆栈溢出了很多例子和解释。 规范是JSR 310。
您可以直接与数据库交换java.time对象。 使用符合JDBC 4.2或更高版本的JDBC驱动程序。 不需要字符串,不需要java.sql.*
类。
何处获取java.time类?
ThreeTen-Extra项目将java.time扩展到其他类。 这个项目是未来可能增加java.time的一个试验场。 您可以在这里找到一些有用的课程,例如Interval
, YearWeek
, YearQuarter
等。
尝试这个。
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat(
"E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
String CurrentTime = ft.format(dNow);
链接地址: http://www.djcxy.com/p/18609.html