【问题标题】:How to convert UTC time in millis to formatted date-time in different time zones using joda time?如何使用 joda 时间将 UTC 时间以毫秒为单位转换为不同时区的格式化日期时间?
【发布时间】:2011-11-24 12:26:03
【问题描述】:

根据时区(使用 joda 时间)将 UTC 时间(以毫秒为单位)呈现为格式化时间的最佳方法是什么?

示例:

如果我有currrentTimeInGMT = 1322137038601
如何将此时间转换为 'yyyy/MM/dd hh:mm:ss' 格式,日期时间因时区而异?

【问题讨论】:

  • 为什么要为此使用 Joda 而不是标准 API?
  • 如果您要做的不是最琐碎的日期/时间工作,您应该使用 Joda Time - 这是标准 JDK API 之后的新鲜空气,在 JDK 中排名最差.
  • Joda 可能是一股清新的空气,但也缺少一些相当琐碎的功能,并且恕我直言(至少部分地)有一个相当不直观的 API。然而,这不是我的问题。我问 Emil 为什么他想使用 Joda 来完成这个任务:格式化带有条件时区的时间戳。
  • @jarnbjo:我目前正在为此使用标准 api。我只是想进行基准测试,看看 Joda time 是否提供了更好的性能。对于当前的实现,你可以参考这个link。如果你可以给出一个更好的实现,我想看看。
  • 您链接到的实现不是很聪明。响应中已经提到您不应该操纵 Date 或 Timestamp 实例来应用时区信息,因为这些类不知道时区。

标签: java jodatime


【解决方案1】:

您可以执行以下操作以从毫秒创建 DateTime 并为其指定特定时区:

DateTime d =
  new DateTime(1322137038601L).toDateTime(DateTimeZone.forID("Europe/Berlin"));

自定义格式:

System.out.println(DateTimeFormat.forPattern("yyyy/MM/dd hh:mm:ss").print(d));

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 2021-02-27
    • 2022-11-27
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多