【发布时间】:2015-11-05 16:53:30
【问题描述】:
我正在尝试将日期时间字符串 10/10/2015 10:00:00 转换为自 unix 纪元以来的秒数,即 1444471200。然而,奇怪的是我得到了1444467600 的值,实际上是10/10/2015 09:00:00。这是我的代码:
// using "joda-time" % "joda-time" % "2.9",
// "org.joda" % "joda-convert" % "1.8.1",
import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat
val dt = DateTime.parse(dateTimeString, DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss"))
dt.getMillis / 1000
这个小时偏移量来自哪里,我该如何摆脱它?我的本地时区是格林威治标准时间(目前 == UTC)...
【问题讨论】:
-
我怀疑您的本地时区实际上是欧洲/伦敦,而不是格林威治标准时间。他们非常不同。 10 月 10 日,欧洲/伦敦时间为 UTC+1...
-
@JonSkeet 好点。你是对的。现在欧洲/伦敦是 UTC。我正在使用 python 来仔细检查我的值,所以我想那是在给不知道 TZ 的日期。谢谢。
-
这里要学习的教训是在序列化日期时间值时始终包含与 UTC 的偏移量。更好的是,坚持使用ISO 8601 标准格式。
-
@BasilBourque 正确。不幸的是,这是第三方数据:-(