C#版本的Javascript Date.getTime()

Mic*_*ael 14 javascript c#

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

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

Eni*_*ate 23

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

  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;
  }
Run Code Online (Sandbox Code Playgroud)

  • @pratapk是否有可能将结果四舍五入(+0.5)导致结果出现一些不准确? (2认同)

V4V*_*tta 18

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

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

现在你可以使用的TotalMilliseconds属性了Timespan.


Roy*_*mir 6

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
Run Code Online (Sandbox Code Playgroud)


Mat*_*int 5

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

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