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;
}