- 可以认为格林威治时间就是时间协调时间(GMT=UTC),格林威治时间和UTC时间均用秒数来计算的。
- UTC时间与本地时间区别仅在于时区不同,两者都绝对地表示某个日期时间,精度相同,格式相同,表示方式相同
- UTC时间与本地时间互相转换时,要明确拿到的是UTC时间还是本地时间(所在时区),才能确定要加还是减
- C#中UTC时间获取方法(转为秒表示):
var UtcSeconds = new TimeSpan(DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1).Ticks).TotalSeconds;
-
C#中DateTime.UtcNow.Millisecond仅表示当前时间点的毫秒值,并非毫秒表示的UTC时间;DateTime.UtcNow.Ticks是从公元0年0日0分开始计算的值,需要自己手动减去1970年1月1日的Tick值(621355968000000000)
-
DateTime.ToFileTimeUtc() 方法得到的UTC Ticks是windows文件系统时间1,从1601年1月1日12:00开始计时的日期,不是通用UTC时间;可通过DateTime.FromFileTimeUtc()转回通用DateTime。
MSDN参考 -
c# UTC时间与DateTime转换
public double ConvertDateTimeInt(System.DateTime time)
{
double intResult = 0;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
intResult = (time - startTime).TotalSeconds ;
return intResult;
}
public DateTime ConvertIntDatetime(double utc)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
startTime = startTime.AddSeconds(utc);
startTime = startTime.AddHours(8);//转化为北京时间(北京时间=UTC时间+8小时 )
return startTime;
}
- 其他语言获取UTC时间方法 : “UTC时间、GMT时间、本地时间、Unix时间戳”
Converts the value of the current DateTime object to a Windows file time. ↩︎