我需要将 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.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 上多次报道。搜索了解更多。