C# version of Javascript Date.getTime()

本文关键字:getTime Date Javascript version of | 更新日期: 2023-09-27 18:14:54

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

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

C# version of Javascript Date.getTime()

您可以使用以下解决方案:

private int GetTime()
{
   var time = (DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1));
   return (int)(time.TotalMilliseconds + 0.5);
}
 

由于JavaScript时间相对于UTC是,我认为您需要这样的东西:

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

现在可以使用TimespanTotalMilliseconds属性。

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

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以来表示自1月1日00:00:00 GMT以来的日期(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

现在在C#中,您可以使用内置函数:

new DateTimeOffset(Your_DateTime_Variable_Here).ToUnixTimeMilliseconds()

因此示例代码为:

var dateToUse = DateTime.Now;
var javaGetTimeValue = new DateTimeOffset(dateToUse).ToUnixTimeMilliseconds()

当前接受的答案返回一个不正确的int。它必须是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;            
}

以下是一个基于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();

private static ulong GetTime()
{
    const long INIT_DATA_TICKS = 621355968000000000; // 1.1.1970 in ticks
    const double ROUNDINGS_FIX = 0.5;
    TimeSpan dTicks = new TimeSpan(DateTime.UtcNow.Ticks - INIT_DATA_TICKS);
    return (ulong)(dTicks.TotalMilliseconds + ROUNDINGS_FIX);
}

DateTime.Now.ToUniversalTime((使用内部DateTime.UtcNow