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


    来自:

    http://www.cnblogs.com/jordan2009/archive/2009/08/17/1547875.html 

            private long GetJsTimes()
            {
                DateTime dt = DateTime.Now;
                long dtTicks = dt.ToUniversalTime().Ticks;
                long jsBeginTick = DateTime.Parse("1970-1-1").Ticks;
                long dtJsTicks = (dtTicks - jsBeginTick) / (1000 * 10);
                return dtJsTicks;
            }

            private DateTime ToDotnetTime(long jsTime)
            {
                long jsBeginTick = DateTime.Parse("1970-1-1").Ticks;

                long netTicks = jsTime * 1000 * 10 + jsBeginTick;
                DateTime dt = new DateTime(netTicks);
                DateTime dt2 = dt.ToLocalTime();

                return dt2;

            }

  • 相关阅读:
    hadoop中namenode发生故障的处理方法
    开启虚拟机所报的错误:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary fil
    Hbase的安装与部署(集群版)
    分别用反射、编程接口的方式创建DataFrame
    用Mapreduce求共同好友
    SparkSteaming中直连与receiver两种方式的区别
    privot函数使用
    Ajax无刷新显示
    使用ScriptManager服务器控件前后台数据交互
    数据库知识
  • 原文地址:https://www.cnblogs.com/answer/p/1656879.html
Copyright © 2011-2022 走看看