C#与JS UTC时间相互转换

UTC

UTC时间具体是什么也不清楚,
可以理解为从某一个时间点开始比如(1970.1.1 0:0:0)开始到另外一个时间,
比如2019.1.1 0:0:0所经历的秒数或者毫秒数或者其他计时单位。

JS和C#计时的区别

JS中的UTC计数:JS中Date类的UTC函数 返回公元1970 年 1 月 1 日 到指定日期的毫秒数。
C#中的UTC计数:C#中ToFileTimeUtc函数返回公元1601 年 1 月 1 日 起到指定日期经过的时间数(单位为100纳秒)。还有一个Ticks属性返回0001 年 1 月 1 日 0:00:00 以来所经历时间数 (单位为100纳秒)。

代码实现

 1. JS UTC转C# DateTime

    public DateTime JsUTCToCSharpDate(long ticks)
    {
        DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));//JS时间是从1970开始算起。
        ticks = ticks *10000;//JS的计数单位是毫秒,所以转换为100纳秒需要乘10000
        TimeSpan ts = new TimeSpan(ticks);
        DateTime dtRet = dtStart.Add(ts); //转换后的时间
        return dtRet;
    }

2.C# DateTime转JS UTC

    public long CSharpDateToJsUTC(DateTime dateTime)
    {
        System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
        long ticks = (dateTime.Ticks - startTime.Ticks)/10000;
        return ticks;
    }

 参考链接:1.https://www.jb51.net/article/57401.htm

                   2.JS Datetime说明

                   3.C# Datetime说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值