Oracle日期到Java日期

什么SimpleDateFormat用于解析Oracle日期?

我正在使用这个SimpleDateFormat。

SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy / mm / dd hh:mm:ss.sss”);

它给出了这个例外。

java.text.ParseException:Unparseable date:“2011-08-19 06:11:03.0”

请告诉我使用SimpleDateFormat。 谢谢。


你应该使用这个模式"yyyy-MM-dd HH:mm:ss.S"而不是"yyyy/mm/dd hh:mm:ss.sss"

“上午/下午(1-12)小时”和H为“白天小时(0-23)”的小h
看到这里:SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date date = dateFormat.parse("2011-08-19 06:11:03.0");

TL;博士

LocalDateTime.parse( 
    "2011-08-19 06:11:03.0".replace( " " , "T" ) 
) 

细节

您的输入字符串与您的格式模式不匹配。 你的模式会在你的数据有连字符的地方加上斜杠。

java.time

此外,您正在使用可怕的旧日期时间类,它们现在已经成为遗留的类,被java.time类取代。

您的输入字符串几乎符合日期时间格式的ISO 8601标准。 用T替换中间的SPACE。

String input = "2011-08-19 06:11:03.0".replace( " " , "T" ) ;

您的输入缺少任何时区或与UTC的偏移的指示符。 所以我们解析为一个LocalDateTime ,一个缺少区域/偏移概念的对象。

LocalDateTime ldt = LocalDateTime.parse( input ) ;

要以标准格式生成字符串,请调用toString

String output = ldt.toString() ;

如果此输入用于特定时区,请将其分配。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;

关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了诸如java.util.DateCalendarSimpleDateFormat等麻烦的旧式遗留日期时间类。

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参阅Oracle教程。 并搜索堆栈溢出了很多例子和解释。 规范是JSR 310。

使用符合JDBC 4.2或更高版本的JDBC驱动程序,您可以直接与数据库交换java.time对象。 不需要字符串或java.sql。*类。

何处获取java.time类?

  • Java SE 8Java SE 9和更高版本
  • 内置。
  • 带有捆绑实现的标准Java API的一部分。
  • Java 9增加了一些次要功能和修复。
  • Java SE 6Java SE 7
  • 大部分java.time功能都在ThreeTen-Backport中移植到Java 6和7。
  • Android的
  • 后续版本的java.time类的Android捆绑实现。
  • 对于早期的Android, ThreeTenABP项目采用ThreeTen-Backport(上文提到)。 请参阅如何使用ThreeTenABP ...。
  • ThreeTen-Extra项目将java.time扩展到其他类。 这个项目是未来可能增加java.time的一个试验场。 您可以在这里找到一些有用的课程,例如IntervalYearWeekYearQuarter等。

    链接地址: http://www.djcxy.com/p/59283.html

    上一篇: Oracle date to Java date

    下一篇: How to submit an App to AppStore from other Mac?