【发布时间】:2012-11-03 15:30:26
【问题描述】:
我正在使用 groovy(确切地说是遍历图形数据库的小精灵)。不幸的是,因为我使用的是 gremlin,所以我无法导入新的类。
我有一些日期值希望转换为 Unix 时间戳。它们以 UTC 格式存储为:2012-11-13 14:00:00:000
我正在使用这个 sn-p 解析它(在 groovy 中):
def newdate = new Date().parse("yyyy-M-d H:m:s:S", '2012-11-13 14:00:00:000')
问题在于它进行了时区转换,结果是:
Tue Nov 13 14:00:00 EST 2012
如果我随后使用time() 将其转换为时间戳,该时间戳将转换为UTC,然后生成时间戳。
如何让new Date() 在首次解析日期时不进行任何时区转换(并且假设日期为 UTC)?
【问题讨论】:
-
好吧,我想到了
new Date().parse("yyyy-M-d H:m:s:S" + " Z", '2012-11-13 14:00:00:000' + ' 0000')... -
@vladr: groovy 控制台只是向我抛出一个错误并说它无法解析:(
java.text.ParseException: Unparseable date: "2012-11-13 14:00:00:000 0000" -
@F21 @vladr:如果您将其更改为
def newdate = new Date().parse("yyyy-M-d H:m:s:S Z", '2012-11-13 14:00:00:000' + ' UTC'),该解决方案对我有效。#parse是静态的 btw,所以除非 Gremlin 强迫你这样做,否则你不需要创建Date的实例来调用它。 -
@JustinPiper Gremlins 让我这么做,我发誓! :) (复制粘贴)| @F21,对不起,时区应该是
' +0000',而不是' 0000'| @jahroy,我认为我给出的示例附加了时区,不是吗? :) -
@vladr - 抱歉...我忽略了它(有时很难在 cmets 中阅读代码)。
标签: java datetime groovy gremlin