【问题标题】:Convert Joda LocalDateTime to Unix timestamp将 Joda LocalDateTime 转换为 Unix 时间戳
【发布时间】:2015-12-30 14:39:19
【问题描述】:

如果本地时间在 UTC 时区,我如何将 org.joda.time.LocalDateTime 转换为 Unix 时间戳?

例子:

new LocalDateTime(2015, 10, 02, 11, 31, 40) > 1443785500.

【问题讨论】:

  • 如果我记得,Unix 时间戳是自 Unix 纪元以来的秒数,可能类似于 this
  • A LocalDateTime 没有时区,因此它不代表一个时间点。您需要指定一个时区才能使其有意义。
  • @MadProgrammer 那个链接是关于 Java 8 time api,而不是 Joda!不幸的是,我没有找到与 Joda l.d.t. 相同的主题
  • @DenisKulagin Opps,是一个快速搜索:P
  • @MadProgrammer N.P.,我也遇到过这些问题,甚至尝试将其放入代码中。显然没有运气)

标签: java jodatime unix-timestamp


【解决方案1】:

假设您想要 Unix 时间戳“给定的 LocalDateTime,UTC 时间”,最简单的方法就是通过为 UTC 指定 DateTimeZone 将其转换为 DateTime,然后进行转换:

LocalDateTime local = new LocalDateTime(2015, 10, 02, 11, 31, 40);
DateTime utc = local.toDateTime(DateTimeZone.UTC);
long secondsSinceEpoch = utc.getMillis() / 1000;

注意这里使用秒作为 Unix 时间戳 - 其他 API(例如 java.util.Date)可能期望自 Unix 纪元以来的毫秒数。

【讨论】:

  • 您也可以使用DateTimeConstants.MILLIS_PER_SECOND 代替1000 或使用Duration.millis(local.toDateTime(DateTimeZone.UTC).getMillis).getStandardSeconds
  • 简单而整洁,当 Joda 开发人员正在寻找将 getLocalMillis() 公开的理由时。链接:github.com/JodaOrg/joda-time/issues/87
猜你喜欢
  • 2021-11-26
  • 1970-01-01
  • 2013-04-07
  • 2015-07-08
  • 1970-01-01
  • 2023-03-18
  • 2020-10-19
  • 2013-07-02
  • 2020-06-01
相关资源
最近更新 更多