【发布时间】:2011-12-29 08:51:15
【问题描述】:
在 c# 中获得与 javascript date.gettime() 调用相同的结果的最佳方法是什么?
getTime() 方法返回自 1970 年 1 月 1 日午夜和指定日期以来的毫秒数。
【问题讨论】:
标签: c# javascript
在 c# 中获得与 javascript date.gettime() 调用相同的结果的最佳方法是什么?
getTime() 方法返回自 1970 年 1 月 1 日午夜和指定日期以来的毫秒数。
【问题讨论】:
标签: c# javascript
你可以使用这个解决方案:
private int GetTime()
{
var time = (DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1));
return (int)(time.TotalMilliseconds + 0.5);
}
【讨论】:
long
由于 JavaScript 时间相对于 UTC,我认为您需要这样的东西:
var st = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var t = (DateTime.Now.ToUniversalTime() - st);
// t.TotalMilliseconds
现在您可以使用Timespan 的TotalMilliseconds 属性。
【讨论】:
正确的实现(假设当前时间)如下:
DateTime utcNow = DateTime.UtcNow;
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
long ts = (long)((utcNow - epoch).TotalMilliseconds);
【讨论】:
Java 和 JavaScript Date.getTime() 方法返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
自从 .NET 表示自格林威治标准时间 0001 年 1 月 1 日 00:00:00 以来以 Ticks 表示的日期(1 Tick = 0.1 纳秒或 0.0001 毫秒),我们必须使用 转换公式,其中 621355968000000000 是基准日期(以 Ticks 为单位)之间的偏移量,10000 是每个 Ticks 的数量 毫秒。
Ticks = (MilliSeconds * 10000) + 621355968000000000
MilliSeconds = (Ticks - 621355968000000000) / 10000
【讨论】:
我想这会成功:)
public double MilliTimeStamp(DateTime TheDate)
{
DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = TheDate.ToUniversalTime();
TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
return ts.TotalMilliseconds;
}
【讨论】:
TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);可以简化为TimeSpan ts = d2 - d1;
(DateTime.Now - new DateTime (1970, 1, 1)).TotalMilliseconds
【讨论】:
new DateTime(1970, 1, 1)。
这是一个基于Enigma State's answer的扩展方法
public static Int64 GetJavascriptTimeStamp(this DateTime dt)
{
var nineteenseventy = new DateTime(1970, 1, 1);
var timeElapsed = (dt.ToUniversalTime() - nineteenseventy);
return (Int64)(timeElapsed.TotalMilliseconds + 0.5);
}
在当前时间使用它:
var timeStamp = DateTime.Now.GetJavascriptTimeStamp();
【讨论】:
当前接受的答案返回一个不正确的 int。它必须是 Int64 或 long。这只是将 Matt Johnson-Pint(并由 Adaptabi 编辑)提供的正确答案重写为一行。请接受 Matt Johnson-Pint 的回答。我在控制台中根据实际的 javascript new Date().getTime() 检查了它,以验证它返回相同的数字。
long JavascriptGetTime()
{
return (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
}
【讨论】: