考虑一下时间:
1286294501433
这表示自1970年以来经过的毫秒数,我们如何将其转换为DateTime数据类型? EG:
transactionTime = "1286294501433";
UInt64 intTransTime = UInt64.Parse(transactionTime);
DateTime transactionActualDate = DateTime.Parse(intTransTime.ToString());
抛出:
字符串未被识别为有效字符串 日期时间。
请注意,在 1970之后,所有传入此功能的时间都保证为。
答案 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年,不算闰秒。我