0

.NETを使用して、多くDateのsを含むJSONファイルを生成しています。

圧縮のために、文字列ではなく1970年1月1日からのミリ秒として保存してから、Javascriptの日付に変換したいと思います。しかし、1970-01-01以降の.Netのミリ秒の考え方は、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 に答える