C#版本的Javascript Date.getTime()

在c#中获取javascript date.gettime()调用相同结果的最佳方法是什么?

getTime()方法返回自1970年1月1日午夜和指定日期以来的毫秒数。

你可以使用这个解决方案……

private Int64 GetTime() { Int64 retval=0; var st= new DateTime(1970,1,1); TimeSpan t= (DateTime.Now.ToUniversalTime()-st); retval= (Int64)(t.TotalMilliseconds+0.5); return retval; } 

由于JavaScript时间与UTC相关 ,我认为你需要这样的东西:

 DateTime st=new DateTime(1970,1,1, 0, 0, 0, DateTimeKind.Utc); TimeSpan t= (DateTime.Now.ToUniversalTime()-st); //t.TotalMilliseconds 

现在,您可以使用TimespanTotalMilliseconds属性。

Java和JavaScript Date.getTime()方法返回自1970年1月1日00:00:00 GMT以来的毫秒数。

由于.NET表示自格林威治标准时间1月1日00:00:00以来的Ticks中的日期(1 Tick = 0.1纳秒或0.0001毫秒),我们必须使用转换公式,其中621355968000000000是Ticks中基准日期与10000之间的偏移数量每毫秒刻度。

 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; } 
 (DateTime.Now - new DateTime (1970, 1, 1)).TotalMilliseconds 

正确的实现(假设当前时间)如下:

 DateTime utcNow = DateTime.UtcNow; DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long ts = (long)((utcNow - epoch).TotalMilliseconds); 

这是一个基于Enigma State答案的扩展方法

 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();