UTC秒数转换成时间

    UTC(Universal Time Coordinated),即通用协调时间,与格林威治时间一样。每个地方的本地时间LT(Local Time)根据时区的划分与UTC时间相差若干小时,例如在中国,以北京时间来算的话与UTC时间相差8个小时,如果UTC时间是1月1日21点,那么北京时间就是1月2日凌晨5点。
    而UTC秒数一般来说,都是相对于1970年01月01日0点0分0秒的秒数。因此我们要将UTC秒数转换成本地时间,需要加上1970年01月01日0点0分0秒这个时间。
1)UTC秒数转换成普通时间
static DateTime FromUtcSecondsToTime(long unixTime)
        {
            var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
            return epoch.AddSeconds(unixTime);
        }
2)UTC秒数转换成当地时间,需要根据本地时区来计算
        static DateTime FromUtcSecondsToLocal(long unixTime)
        {
            DateTime local = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1,0,0,0, DateTimeKind.Utc));
            return local.AddSeconds(unixTime);
        }
最后,如果想要将Datetime的时间转换成UTC秒数,time减去1970,1,1这个时间得到总秒数。
        
        static long FromDateToUtcSeconds(DateTime dt)
        {
            return (long)(dt - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
        }


你可能感兴趣的:(C#)