你如何转换C#中的时代时间?

你如何转换C#中的时代时间?

如何转换unix?时代时间变成实时的C#?(1970年1月1日开始)



呼唤远方
浏览 557回答 3
3回答

呼如林

这个NET的最新版本(v4.6)刚增加了对Unix时间转换的内置支持。这包括以秒或毫秒表示的进出Unix时间。以秒为单位的Unix时间DateTimeOffset:DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(1000);DateTimeOffset以秒为单位的Unix时间:long unixTimeStampInSeconds = dateTimeOffset.ToUnixTimeSeconds();Unix时间,以毫秒为单位DateTimeOffset:DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(1000000);DateTimeOffset以毫秒为单位的Unix时间:long unixTimeStampInMilliseconds= dateTimeOffset.ToUnixTimeMilliseconds();注意:这些方法相互转换DateTimeOffset..得到一个DateTime表示只需使用DateTimeOffset.DateTime财产:DateTime dateTime = dateTimeOffset.UtcDateTime;

米脂

为了便于使用,我为LukeH整理了一些扩展方法:public static DateTime FromUnixTime(this long unixTime){     var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);     return epoch.AddSeconds(unixTime);}public static long ToUnixTime(this DateTime date){     var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);     return Convert.ToInt64((date - epoch).TotalSeconds);}注意下面CodesInChaos的评论,上面的FromUnixTime返回DateTime带着Kind的Utc,这很好,但是上面ToUnixTime更令人怀疑的是,这并不能解释DateTime给出date是。允许date氏Kind任一Utc或Local,使用ToUniversalTime:public static long ToUnixTime(this DateTime date){     var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);     return Convert.ToInt64((date.ToUniversalTime() - epoch).TotalSeconds);}ToUniversalTime将转换为Local(或Unspecified) DateTime到Utc.如果您不希望在从DATE时间迁移到另一个日期时创建EIRCHDATETIME实例,您也可以这样做:public static long ToUnixTime(this DateTime date){     return (date.ToUniversalTime().Ticks - 621355968000000000) / 10000000;}
打开App,查看更多内容
随时随地看视频慕课网APP