.NET中Date.UTC的模拟是什么

时间:2011-08-16 15:02:18

标签: javascript .net

Java脚本的Date.UTC方法与Date.UTC(2004,3,1) .NET中使用的Date.UTC(2004,3,1)类似吗?

我试图使用DateTime.ToFileTimeUtc()但它返回的是不同的值。

例如,如果我有这个日期

javascript 1075766400000将返回此DateTime.ToFileTimeUtc() 但是127175616000000000会返回此 TimeSpan timeSpan = new DateTime(2004, 3, 1, 0, 0, 0, DateTimeKind.Utc) - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long milliSeconds = (long)timeSpan.TotalMilliseconds; // equal to 1073088000000

需要帮助

更新

当我使用此

milliSeconds

1073088000000等于Date.UTC(2004,3,1)但如果是1075766400000,则为00:04:27.8400000 http://jsfiddle.net/M3aJQ/

差异为{{1}}

3 个答案:

答案 0 :(得分:1)

正如@Jon Marting所说; DateTime Constructor (Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) 并使用DateTimeKind.Utc

public DateTime(
int year,
int month,
int day,
int hour,
int minute,
int second,
DateTimeKind kind
)

答案 1 :(得分:1)

DateTime方法ToUniversalTime()将正确转换为UTC。

DateTime now = DateTime.Now;
DateTime utc = now.ToUniversalTime();

当然.Now中的UTC你也可以使用:

DateTime utcnow = DateTime.UtcNow;

答案 2 :(得分:0)

DateTime.ToFileTimeUtc()在JavaScript中使用与Date.UTC()不同的纪元。这就是为什么你得到不同的答案。根据{{​​3}},它返回“自公元1601年1月1日午夜12点(世界时间)协调世界时(UTC)午夜12点以来经过的100纳秒间隔的数量。”

然而,我相信JavaScript的Date.UTC方法返回自1970年1月1日午夜以来的毫秒数。

你可以自己做,比如.net:

        TimeSpan timeSpan = new DateTime(2004, 3, 6, 0, 0, 0, DateTimeKind.Utc) - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        long milliSeconds = (long)timeSpan.TotalMilliseconds;