一尘不染

如何在本地时区中将javax.time.Instant格式化为字符串?

java

如何javax.time.Instant在本地时区中将a
格式化为字符串?以下内容将本地语言转换InstantUTC,而不是我期望的那样。删除对的调用toLocalDateTime()也是如此。我该如何获取当地时间?

public String getDateTimeString( final Instant instant )
{
    checkNotNull( instant );
    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
    DateTimeFormatter formatter = builder.appendPattern( "yyyyMMddHHmmss" ).toFormatter();
    return formatter.print( ZonedDateTime.ofInstant( instant, TimeZone.UTC ).toLocalDateTime() );
}

注:我们正在使用的旧版本
0.6.3
中的JSR-310参考实现。


阅读 224

收藏
2020-12-03

共1个答案

一尘不染

在您否决我的答案之前,请注意,问题明确(以粗体显示)是指 JSR-310参考实现的旧版本 0.6.3 !在Java
8和新的日期库问世之前,我在2012年12月问了这个问题!


我放弃了对JSR-310类DateTimeFormatterZonedDateTime,而是采取了老式的java.util.Datejava.text.SimpleDateFormat

public String getDateTimeString( final Instant instant )
{
    checkNotNull( instant );
    DateFormat format = new SimpleDateFormat( "yyyyMMddHHmmss" );
    Date date = new Date( instant.toEpochMillisLong() );
    return format.format( date );
}
2020-12-03