ASP.net c#解析int作为datetime

时间:2010-10-06 09:51:33

标签: c# asp.net datetime casting

考虑一下时间:

  

1286294501433

这表示自1970年以来经过的毫秒数,我们如何将其转换为DateTime数据类型? EG:

transactionTime = "1286294501433";
UInt64 intTransTime = UInt64.Parse(transactionTime);
DateTime transactionActualDate = DateTime.Parse(intTransTime.ToString());

抛出:

  

字符串未被识别为有效字符串   日期时间。

请注意,在 1970之后,所有传入此功能的时间都保证为

3 个答案:

答案 0 :(得分:14)

var dt = new DateTime(1970, 1, 1).AddMilliseconds(1286294501433);

您可能还需要明确指定DateTimeKind,具体取决于您的具体要求:

var dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
             .AddMilliseconds(1286294501433);

答案 1 :(得分:1)

为了进一步简化它,还要考虑当地时区:

只需创建此整数扩展名 -

  public static class currency_helpers {
    public static DateTime UNIXTimeToDateTime(this int unix_time) {
      return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(unix_time).ToLocalTime();
    }
  }

然后在任何地方调用它:

var unix_time = 1336489253;    
var date_time = unix_time.UNIXTimeToDateTime();

date_time的值为:

5/8/2012 10:00:53 AM

(来自:http://www.codeproject.com/Articles/10081/UNIX-timestamp-to-System-DateTime?msg=2494329#xx2494329xx

答案 2 :(得分:0)

假设这是unix时间的秒数,那么

int unixtimestamp=int.Parse(str);
new DateTime(1970,1,1,0,0,0).AddSeconds(unixtimestamp);

喜欢这个fetcher guy said

wiki说

  

Unix时间或POSIX时间是一个系统   用于描述定义的时间点   作为自那以来经过的秒数   午夜保守协调   1月1日的世界时(UTC),   1970年,不算闰秒。我