Unix时间戳,从1970-1-1 0:0:0 UTC到现在的累计时间:秒数,毫秒数
public static DateTime UnixTimeStampStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime的Ticks: 单位是 100 毫微秒,表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。
可以通过转换DateTime到Ticks或秒,毫秒或自定义格式来生成时间戳。
转换DateTime为Ticks:
public static longDateTimeToTicks(DateTime time)
{long value =time.ToUniversalTime().Ticks;returnvalue;
}
转换Ticks为DateTime:
public static DateTime TicksToDateTime(longvalue)
{
DateTime time=TimeZoneInfo.ConvertTimeFromUtc(newDateTime(value),
TimeZoneInfo.Local);returntime;
}
注意:转换Ticks获得的DateTime时区为UTC,需要转换为当地时区。
DateTime转换为秒:
public static longDateTimeToTimeStamp(DateTime dateTime)
{return (long)(dateTime.ToUniversalTime() -UnixTimeStampStart).TotalSeconds;
}
使用传入的时间-之前定义的Unix时间戳开始时间,再获取时间差的累计秒。
秒转换为DateTime:
public static DateTime TimeStampToDateTime(longsec)
{returnUnixTimeStampStart.AddSeconds(sec).ToLocalTime();
}
也可使用同样方法转换为毫秒,由毫秒转换回DateTime。
自定义时间戳:
我自定义了一种时间戳,使用字符串格式化表示来定义时间戳。
比如对于:年-月-日_时-分-秒 的格式化转换定义:
public static stringDTToMyTS(DateTime dt)
{string ts = dt.ToString("yyyy-MM-dd_hh-mm-ss");returnts;
}