You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Joda Time转换为Java Time并保留原UTC时间格式?

问题:将Joda Time转换为Java Time时,如何让输出格式与Joda一致?

我的Joda Time代码:

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 Time输出:

1970-01-15T05:45:05.000Z

Java代码输出:

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

请问有没有办法让Java代码输出与Joda Time一致的格式?


解决方案

要实现和Joda Time完全一致的输出格式(ISO 8601带毫秒和UTC标识Z),推荐直接使用Java 8及以上自带的java.time标准库(官方用来替代Joda Time的方案),步骤如下:

  1. 将秒级时间戳转换为Instant(代表UTC时间线上的瞬时点,无需手动乘1000):
Instant instant = Instant.ofEpochSecond(argDateString);
  1. 调用toString()方法即可得到目标格式,Instant的默认输出就是yyyy-MM-dd'T'HH:mm:ss.SSS'Z',和Joda Time的结果完全匹配:
return instant.toString();

如果必须基于Date类实现,也可以用SimpleDateFormat指定格式并强制设置UTC时区:

Date istime = new Date(argDateString * 1000);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
return sdf.format(istime);

注意:DateFormat和SimpleDateFormat都是线程不安全的,优先使用java.time包下的类,它们设计更合理且线程安全。

内容的提问来源于stack exchange,提问作者Random Things

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:24:27