米脂
为了便于使用,我为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;}