博士tl;
Instant.now()
.toString()
2016 - 05 - 06 - t23:24:25.694z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19:24:25.694
java.time
在Java 8及以后的版本中,我们有Java。在Java 8及以后版本中内置了时间框架。这些新类取代了麻烦的旧java.util.Date/。日历类。新类的灵感来自于非常成功的Joda-Time框架,该框架作为它的继承者,在概念上类似,但重新构建。由JSR 310定义。由ThreeTen-Extra项目扩展。请参阅教程。
注意java。time具有纳秒级分辨率(小数点后9位),而java.util.Date和Joda-Time具有毫秒级分辨率(小数点后3位)。因此,当格式化为只显示小数点后3位时,可能隐藏了数据。
如果希望从数据中删除任何微秒或纳秒,请截断。
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
java。time类在解析/生成字符串时默认使用ISO 8601格式。末尾的Z是Zulu的缩写,意思是UTC。
一个瞬间表示UTC时间轴上的一个时刻,分辨率最高可达纳秒。在Java 8中,捕获当前时刻的时间限制在毫秒,而在Java 9中,根据计算机硬件时钟的能力,新的实现可以捕获到纳秒。
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016 - 05 - 06 - t23:24:25.694z
将中间的T替换为空格,Z替换为空,以获得所需的输出。
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23:24:25.694
因为您不关心是否包含偏移量或时区,所以让“本地”日期-时间与任何特定的位置无关。
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
乔达时间
非常成功的Joda-Time库是java的灵感来源。时间框架。建议迁移到java。方便的时候。
ISO 8601格式包括毫秒,是Joda-Time 2.4库的默认格式。
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
运行时……
Now: 2013-11-26T20:25:12.014Z
此外,如果需要,你还可以请求以毫秒为单位的秒数:
int millisOfSecond = myDateTime.getMillisOfSecond ();