这是什么样的日期格式以及如何对其进行转换?

时间:2014-08-08 23:40:59

标签: ruby json date datetime

私有(无公开文档)API发出GET请求以JSON格式返回数据。

日期的值如下所示:

AanmeldDatum: "/Date(1262300400000+0100)/"

另一个名为AangebodenSindsTekst的变量意味着OfferedSinceText,它的值为"8 augustus 2014"。因此,未知的日期格式应该被解析为该特定值。

我想知道它是什么样的日期格式,我怎么能用Ruby将它转换成这样的2014-08-08

我试过这个:

require 'time'

t = '1262300400000+0100'

t2 = Time.parse(t)  

# => ArgumentError: no time information in "1262300400000+0100"

3 个答案:

答案 0 :(得分:1)

Ruby的Time类是你的朋友,特别是strptime方法:

require 'time'

foo = Time.strptime('1262300400000+0100', '%N') # => 2014-08-08 16:57:25 -0700
foo = Time.strptime('1262300400000+0100', '%N%z') # => 2014-08-08 08:57:25 -0700

%N告诉Ruby使用纳秒。如果你不需要其余的值,它会在第9位之后丢弃精度。对于我们大多数人来说,纳秒精度足够好。

%z告诉Ruby找到时区偏移量,然后将其应用于返回值。

虽然parse通常可以弄清楚如何撕开传入的弦,但它不是防弹的,也不是全知。对于速度,如果您的字符串一致,我建议学习并依赖strptime

答案 1 :(得分:1)

正如Tin Man在this回答中指出的那样,请改用以下内容:

Time.strptime('1262300400000+0100', '%Q%z')

答案 2 :(得分:-1)

自epoc以来可能是几毫秒,取出最后3个零并将其插入到unix时间戳转换器中,将于2009年12月31日发布

时间戳:1262300400

DATE(M / D / Y @ h:m:s):12/31/09 @ 11:00:00 pm UTC