【问题标题】:Parsing String Timestamp as JODA TimeStamp将字符串时间戳解析为 JODA 时间戳
【发布时间】:2015-04-02 20:33:51
【问题描述】:

给定以下 UTC 时间:

2009-11-17 10:45:32

我怎样才能创建一个具有确切时间的org.jode.time.LocalDateTime,但使用UTC?

换句话说,该时间戳表示 UTC 时间。我想在joda 中创建一个新的 Timestamp 对象,该时间为 UTC。

我尝试了以下失败:

scala> org.joda.time.LocalDateTime.parse("2009-11-17 10:45:32", 
                                          org.joda.time.format.ISODateTimeFormat.tTime)
java.lang.IllegalArgumentException: Invalid format: "2009-11-17 10:45:32"

【问题讨论】:

  • "2009-11-17 10:45:32" 不是 UTC 时间 - 它没有指定 any 偏移量。它只是指定的LocalDateTime。我根本不知道时区与这个问题有什么关系......

标签: timezone timestamp jodatime


【解决方案1】:

我怀疑这里的问题只是值中缺少T。请注意,“LocalDateTime [...] 但在 UTC 中”的想法是没有意义的。 LocalDateTime没有没有时区。

最简单的解决方法可能只是从一个模式创建一个DateTimeFormatter

// Java code, but Scala should be similar
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = format.parseLocalDateTime(value);

您可以创建一次 DateTimeFormatter 并将其存储在静态最终变量中 - DateTimeFormatter 是线程安全的(例如,与 SimpleDateFormat 不同。)

【讨论】:

  • 谢谢!我应该读过docs:LocalDateTime is an unmodifiable datetime class representing a datetime without a time zone.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多