C# version of Javascript Date.getTime()

前端 未结 8 1281
予麋鹿
予麋鹿 2021-02-01 21:11

What is the best way in c# to get the same result of javascript date.gettime() call?

The getTime() method returns the number of milliseconds since midnigh

相关标签:
8条回答
  • 2021-02-01 21:23

    The Java and JavaScript Date.getTime() methods return the number of milliseconds since 1 Jan 1970 00:00:00 GMT.

    Since .NET represents dates in Ticks (1 Tick = 0.1 nanoseconds or 0.0001 milliseconds) since 1 Jan 0001 00:00:00 GMT, we must use a conversion formula where 621355968000000000 is the offset between the base dates in Ticks and 10000 the number of Ticks per Millisecond.

    Ticks = (MilliSeconds * 10000) + 621355968000000000
    MilliSeconds = (Ticks - 621355968000000000) / 10000
    
    0 讨论(0)
  • 2021-02-01 21:23

    I guess this will do the trick :)

    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;
            }
    
    0 讨论(0)
  • 2021-02-01 21:28
    (DateTime.Now - new DateTime (1970, 1, 1)).TotalMilliseconds
    
    0 讨论(0)
  • 2021-02-01 21:29

    Since JavaScript time is with respect to UTC, I think you will need something like this:

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

    Now you can use the TotalMilliseconds property of the Timespan.

    0 讨论(0)
  • 2021-02-01 21:38

    Here is an extension method based off Enigma State's answer

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

    To use it for the current time:

    var timeStamp = DateTime.Now.GetJavascriptTimeStamp();

    0 讨论(0)
  • 2021-02-01 21:41

    The correct implementation (assuming the current time) is as follows:

    DateTime utcNow = DateTime.UtcNow;
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    long ts = (long)((utcNow - epoch).TotalMilliseconds);
    
    0 讨论(0)
提交回复
热议问题