在c#中获取javascript date.gettime()调用的相同结果的最佳方法是什么?
getTime()方法返回自1970年1月1日午夜和指定日期以来的毫秒数。
答案 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时间
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)
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;
}