我正在尝试使用Joda时间来解析从API响应到long(或Joda DateTime对象)的字符串日期时间,以便将其存储在数据库中。
2018-01-13T16:45:33.416400+00:00
现在我拥有的是:
DateTimeFormatter f = DateTimeFormat.forPattern("yyyy-MM-dd?HH:mm:ss.??????+??:??");
模式中有问号的部分我不知道该放什么。有什么想法吗?
答案 0 :(得分:0)
java.time.OffsetDateTime.parse( “2018-01-13T16:45:33.416400+00:00” )
您的输入字符串表示微秒。 Joda-Time限制为毫秒。所以,方形钉,圆孔。
使用Joda-Time的替代品,即java.time类。
OffsetDateTime
OffsetDateTime
之类的java.time类具有纳秒分辨率,最多9位小数,超过你的微秒。
您的字符串恰好符合日期时间字符串格式的ISO 8601标准。在解析/生成字符串时,java.time类默认使用这些标准格式。因此无需指定格式化模式。
OffsetDateTime odt = OffsetDateTime.parse( “2018-01-13T16:45:33.416400+00:00” ) ;
使用支持JDBC 4.2或更高版本的驱动程序,您可以直接与数据库交换java.time对象。
myPreparedStatement.setObject( … , odt.toInstant() ) ;
...和...
Instant instant = myResultSet.getObject( … , Instant.class ) ;
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?