如何在.Net中获取javascript的Date.parse()?

时间:2012-07-28 13:03:04

标签: javascript .net vb.net json datetime

我正在使用.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的毫秒级以来的想法?

1 个答案:

答案 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