C#版本的Javascript Date.getTime()

时间:2011-11-15 09:33:54

标签: c# javascript

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

  

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

8 个答案:

答案 0 :(得分:22)

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

  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;
  }

答案 1 :(得分:16)

由于JavaScript时间相对于UTC ,我认为您需要这样的内容:

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

现在,您可以使用TotalMilliseconds的{​​{1}}属性。

答案 2 :(得分:5)

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

答案 3 :(得分:3)

我想这会解决问题:)

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;
        }

答案 4 :(得分:1)

(DateTime.Now - new DateTime (1970, 1, 1)).TotalMilliseconds

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

这是基于Enigma State's answer

的扩展方法
IHubProxy _hub;
string url = @"http://localhost:8080/";
var connection = new HubConnection(url);
_hub = connection.CreateHubProxy("Hub");
connection.Start().Wait();
_hub.On("ReceiveMessage", x => Console.WriteLine(x)); //On Receive Message Write To Console

_hub.Invoke("SendMessage", "$").Wait(); //Send LoggedIn Message once connected to server

string line = null;
while ((line = System.Console.ReadLine()) != null)
{
    _hub.Invoke("SendMessage", line).Wait();
}
Console.Read();

要在当前时间使用它:

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

答案 7 :(得分:0)

当前接受的答案返回一个不正确的整数。它必须是Int64或更长。这只是将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;            
}