【问题标题】:DateFormat with Milliseconds in standard Java Library?标准Java库中带有毫秒的DateFormat?
【发布时间】:2017-03-27 17:34:31
【问题描述】:

我想知道标准 Java 库中是否存在用于“完全”格式化日期的静态 StringDateFormat。完全是指日期和时间,包括毫秒和时区,类似于"dd MMM yyyy HH:mm:ss.SSS zzz"。自己声明字符串很容易,但如果我不必为我使用的每个需要毫秒精度日期解析的项目都这样做,那就太好了。到目前为止,我一直找不到。

顺便说一句,我认为java.util.Date#toString() 在它所代表的类中不考虑毫秒,这有点愚蠢。

编辑 - 不幸的是,它不像开始转换为 DateTime 使用那么简单,因为这不是我能控制的。我是该项目中第二个最初级的开发人员。我希望喜欢继续使用 DateTime,但如果没有主管的支持,我不能。

【问题讨论】:

  • @c0der 我不是在问如何格式化日期。我在问某处是否存在包含毫秒的静态格式。
  • java.util.Date::toString 方法不适合生产用途。您必须使用DateFormat 来生成字符串。更好的是,完全避免这些麻烦的遗留日期时间类,而改用 java.time 类。
  • @BasilBourque 我不建议使用toString 方法。反正它不支持毫秒。

标签: java date date-formatting


【解决方案1】:

也适用于您可以使用的 Java 8 Date Time Api

LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME);

这样的结果

2017-03-27T20:46:03.852

【讨论】:

  • 是的,我更喜欢 DateTime 实现,但不幸的是,我工作中的很多项目都是遗留的,不会很快被转换:/ 不过谢谢!
  • @lucasvw 无需转换。您可以在新代码中使用 java.time,同时保持旧代码不变,调用遗留类。在新旧代码重叠的地方,使用旧遗留类中添加的新转换方法来回移动数据。如果使用 Java 6 或 Java 7 而不是 Java 8 及更高版本,ThreeTen-Backport 项目会为您带来很多 java.time 功能。所有这一切都值得费心,因为 (a) 遗留类真的很糟糕,一团糟,而且 (b) java.time 类确实是一个巨大的改进。
  • @anbat LocalDateTime 故意丢失任何时区或从 UTC 偏移的数据。一般最好保留这些有用的信息。代替 LocalDateTime,使用 Instant.now() 代表 UTC 或 ZonedDateTime.now( ZoneId ) 代表特定时区。
  • @basil-bourque 是的,你说得对,如果你需要知道 TZ 或偏移量,你应该使用 InstantZonedDateTimeOffsetDateTime 取决于具体情况,但有时你正在使用一个本地 TZ 只需使用 LocalDateTime 就更容易了。
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多