现在的位置: 首页 > 综合 > 正文

如何在C# DateTime类型和JavaScript的Date之间进行转化

2013年08月21日 ⁄ 综合 ⁄ 共 706字 ⁄ 字号 评论关闭
MONO中文论坛上的地址: http://www.sinoprise.cn/showtopic-242.aspx

在Javascript中是以毫秒为单位对时间进行记录的,并且起始时间是1970-1-1 0:0:0,这个是时间UTC(格林威治时间的0点,在中国,应该是1970-1-1 8:0:0 ,因为中国是东八区,在格林威治时间的0点上加上8个小时)。而C#的时间是以Ticks为单位进行记录的,直译就是CPU的时间“滴答”,是一个比毫秒 还小的单位。在这两者之间进行转化,需要注意起始时间的转换和时区的转换,一下代码可是实现由C#的时间到Javascript的时间的转换:

引用:

        public long MilliTimeStamp(DateTime TheDate)
        {
            DateTime d1 = new DateTime(1970, 1, 1);
            DateTime d2 = TheDate.ToUniversalTime();
            TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);

            return (long)ts.TotalMilliseconds;
        }

注意:

TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
不能写成:

TimeSpan ts = d2 - d1.Ticks;

如果以第二种写法,传递到Javascript中的时间会在东八区的基础上再加上8小时,我的测试时间是11:57分,在JavaScript中打印出来后,是19:57分。
用第一种写法,DotNet Framework自动进行了时区的转换。

有时间详细研究下。

抱歉!评论已关闭.