我正在使用.NET生成一个JSON文件,里面有很多Date
个。
对于压缩,我想将它们存储为自1970年1月1日以来的毫秒而不是字符串,然后将它们转换为Javascript日期。但.Net自1970-01-01以来毫秒的想法与Javascript不匹配:
使用Javascript:
Date.parse("2012-05-15T13:57:57.0000000+00:00")
1337090277000
VB.Net:
Date.Parse("2012-05-15T13:57:57.0000000+00:00").Subtract(New Date(1970,1,1)).TotalMilliseconds
1337101077000.0
差异为10800
秒。 1970-01-01的差异为0,随时间变化。
有没有办法从.Net内部计算Javascript的毫秒级以来的想法?
答案 0 :(得分:4)
您正在将苹果与橙子进行比较。
在UTC + 3(以色列)中,这正是你在javascript中得到的:
Date.parse("2012-05-15T13:57:57.0000000+00:00") - new Date(1970,1,1)
//1334419077000
这是因为当您在javascript中执行new Date
时,这取决于计算机的时区。对于vb.net来说,它看起来是一样的。
您可以使用以下命令在javascript中获取正确的数字:
Date.parse("2012-05-15T13:57:57.0000000+00:00") - Date.UTC(1970,1,1)
//1334411877000
在VB.net中
Dim a As Date
a = Date.Parse("2012-05-15T13:57:57.0000000+00:00").ToUniversalTime()
Dim b As Date
b = New Date(1970, 2, 1, 0, 0, 0, DateTimeKind.Utc)
a.Subtract(b).TotalMilliseconds
'1334411877000 Same as javascript
'Note that in javascript, month as 1 is same as 2 in VB.net because months start at 0 in javascript