zoukankan      html  css  js  c++  java
  • JScript中Date.getTime转.Net中的DateTime

    JS中的getTime与.Net中的DateTime.Ticks意义相近,所以相互转换时,需要用到这两个概念;但是getTime与Ticks的意义有所区别,请看以下定义:

    JS中getTime的定义:
    getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。

    C#中的Ticks
    此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00以来经过的以 100 纳秒为间隔的间隔数。

    对几个词来说明一下,纳秒也叫毫微秒,相互之前的转换关系是 :

    1秒   = 10^3 毫秒
    1毫秒 = 10^3 微秒
    1微秒 = 10^3 毫微秒

    查看getTime与Ticks的定义后,可以得知getTime以毫秒为单位,Ticks以100纳秒为单位,因此getTime与Ticks相差了 1000 * 1000 / 100;getTime()从1970-1-1开始计算,而Ticks从0001-1-1开始计算,因此Ticks多了1970-1-1之前的时间;转换公式如下:

    getTime() * 1000 * 1000 / 100 + DateTime.Parse("1970-1-1").Ticks

    测试程序如下:

    //JS时间转.net时间
    long jsGetTime = 1247617999000;
    Console.WriteLine(jsGetTime);
    long jsBeginTick = DateTime.Parse("1970-1-1").Ticks;
    
    long netTicks = jsGetTime  * 1000 * 10 + jsBeginTick;
    DateTime dt = new DateTime(netTicks);
    Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));
    DateTime dt2 = dt.ToLocalTime();
    Console.WriteLine(dt2.ToString("yyyy-MM-dd HH:mm:ss"));
    
    //.Net时间转JS getTime();
    long dt2Ticks = dt2.ToUniversalTime().Ticks;
    long dt2JsTicks = (dt2Ticks - jsBeginTick) / (1000 * 10);
    Console.WriteLine(dt2JsTicks);
    Console.Read();
  • 相关阅读:
    【题解】NOIP2016换教室
    【题解】平面最近点对(加强版)
    [atcoder002E] Candy Piles [博弈论]
    [AGC002D] Stamp Rally [并查集+整体二分]
    [ACG001E] BBQ hard [dp]
    [BJOI2006][bzoj1001] 狼抓兔子 [最小割]
    [usaco jan 09] 安全路径 travel [最短路径树]
    [usaco jan 09] 气象牛 baric [dp]
    [poj1741] tree [点分治]
    [NOI2009] 植物大战僵尸 [网络流]
  • 原文地址:https://www.cnblogs.com/jordan2009/p/1547875.html
Copyright © 2011-2022 走看看