从 Joda 时间转换为 Java 时间

问题描述 投票:0回答:1

我需要将 joda 时间转换为 Java 时间,但我遇到了一些问题。

我的乔达时间代码:

long argDateString;
DateTime istime = new DateTime(argDateString*1000);

DateTime NormalTime = istime.withZone(DateTimeZone.forID("UTC"));

return normalTime.toString();

我的Java代码:

Date istime = new date(argDateString*1000);

DateFormat normalTime =  DateFormat.getDateTimeInstance(DateFormat.Full, DateFormat.Full);

Return normalTime.format(istime);

与 Joda 一起,我越来越

1970-01-15T05:45:05.000Z 

使用 Java,我得到了

15 January 1970 05:45:05 o'clock UTC

那么有没有办法得到我在 Joda time 中得到的东西?

java jodatime java-time joda-convert
1个回答
2
投票

tl;博士

java.time.Instant
.ofEpochSecond(
    Long.parseLong( input )
)
.toString()

详情

切勿使用

Date
DateFormat
类。这些都存在严重缺陷,现在已经成为遗产。它们被 JSR 310 中定义的现代 java.time 类取代。java.time 框架是 Joda-Time 项目的官方继承者,两者均由同一个人 Stephen Colebourne 领导。

你的第一段代码毫无意义:

argDateString*1000
。字符串不能相乘。

我怀疑您的文本自 1970 年第一刻起(如 UTC 所示)已有几秒。如果是这样,请使用

Long
类解析为
long
原语。

long seconds = Long.parseLong( input ) ;  // Parse text into a number. 

将该数字传递给静态工厂方法以实现

Instant

Instant instant = Instant.ofEpochSecond( seconds ) ;

现在你有了一个对象,其值代表一个时刻,即时间轴上的一个点,如 UTC 所示。

要生成所需标准 ISO 8601 格式的文本,只需调用

toString
java.time 类在生成/解析文本时默认使用 ISO 8601 格式。

String output = instant.toString() ;

所有这些都已在 Stack Overflow 上多次报道。搜索了解更多。

© www.soinside.com 2019 - 2024. All rights reserved.