如何将Unix时间戳转换为日期时间,反之亦然?

如何将Unix时间戳转换为日期时间,反之亦然?

这里有一个示例代码,但随后它开始讨论毫秒/纳秒问题。

同样的问题也出现在MSDN上,自C#中的Unix时代以来的秒数.

到目前为止,这就是我所得到的:

public Double CreatedEpoch{
  get  {
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
    TimeSpan span = (this.Created.ToLocalTime() - epoch);
    return span.TotalSeconds;
  }
  set
  {
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
    this.Created = epoch.AddSeconds(value);
  }}


白板的微信
浏览 1188回答 4
4回答

人到中年有点甜

你需要的是:public static DateTime UnixTimeStampToDateTime( double unixTimeStamp ){     // Unix timestamp is seconds past epoch     System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);     dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();     return dtDateTime;}或者,对于Java(这是不同的,因为时间戳是毫秒而不是秒):public static DateTime JavaTimeStampToDateTime( double javaTimeStamp ){     // Java timestamp is milliseconds past epoch     System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);     dtDateTime = dtDateTime.AddMilliseconds( javaTimeStamp ).ToLocalTime();     return dtDateTime;}

牛魔王的故事

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

慕仙森

日期时间到UNIX时间戳:public static double DateTimeToUnixTimestamp(DateTime dateTime){     return (TimeZoneInfo.ConvertTimeToUtc(dateTime) -             new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc)).TotalSeconds;}
打开App,查看更多内容
随时随地看视频慕课网APP