C# 中的 DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间;而 Unix 的时间戳则表示的是自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。 C# 中似乎并没有内置的方法来完成两者之间的转换。
Code
using System;
namespace zeal.util
{
public class unixTimestamp
{
protected static readonly DateTime unixTPStart =
TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
public static long toUTP(DateTime dt)
{
TimeSpan toNow = dt.Subtract(unixTPStart);
return (long)Math.Round(toNow.TotalSeconds);
}
public static DateTime fromUTP(long tp)
{
return unixTPStart.Add(new TimeSpan(tp * 10000000));
}
}
}
摘:http://www.zeali.net/entry/496