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;

        }

posted @ 2010-08-24 15:42  yellowyu  阅读(438)  评论(0编辑  收藏  举报