0

我正在使用 .NET 生成一个包含许多Dates 的 JSON 文件。

对于压缩,我想将它们存储为自 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 的毫秒自纪元的概念?

4

1 回答 1

4

您正在将苹果与橙子进行比较。

这正是您在 UTC+3(以色列)中使用 javascript 时会得到的:

Date.parse("2012-05-15T13:57:57.0000000+00:00") - new Date(1970,1,1)
//1334419077000

这是因为当您new Date使用 javascript 时,这是根据机器的时区。看起来对 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
于 2012-07-28T13:29:00.263 回答