我是Java新手。我正在尝试以长格式存储当前日期时间,例如2019110820000583。
我尝试使用System.currentTimeMillis()
,但没有给出日期和时间的总和。它给我的结果像1573205716048
。
我是Java新手。我正在尝试以长格式存储当前日期时间,例如2019110820000583。
我尝试使用System.currentTimeMillis()
,但没有给出日期和时间的总和。它给我的结果像1573205716048
。
在UTC中获取当前时刻。
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;
为所需的输出定义格式模式。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuuMMddHHmmss" ) ;
使用所需格式的文本生成字符串。
String output = odt.format( f ) ;
对于时区,类似于上面的代码,但使用ZonedDateTime
代替OffsetDateTime
。
ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )
提示:将日期时间值序列化为文本时,通常最好使用标准ISO 8601格式。要符合ISO 8601的“基本”版本:
T
。 Z
。否则,请附加偏移量。所以这个:
DateTimeFormatter.ofPattern( "uuuuMMdd'T'HHmmssXXXXX" )
请参见完整的示例run live at IdeOne.com。
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuuMMdd'T'HHmmssXXXXX" ) ;
String output = odt.format( f ) ;
odt.toString():2019-11-09T04:38:47.972145Z
输出:20191109T043847Z
java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
目前位于Joda-Time的maintenance mode项目建议迁移到java.time类。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
在哪里获取java.time类?