C#实现时间互转毫秒时间戳
/// <summary> /// DateTime类型转换为时间戳(毫秒值) /// </summary> /// <param name="dateTime">时间</param> /// <returns>13位时间戳</returns> static long DateToTicks(DateTime? dateTime) { //北京时间相差8小时 DateTime startTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1, 8, 0, 0, 0), TimeZoneInfo.Local); return ((dateTime.HasValue ? dateTime.Value.Ticks : DateTime.Parse("1990-01-01 08:00:00:000").Ticks) - startTime.Ticks) / 10000; //除10000调整为13位 } /// <summary> ///时间戳(毫秒值)long转换为DateTime类型转换 /// </summary> /// <param name="timestamp">13位时间戳</param> /// <returns></returns> static DateTime TicksToDate(long timestamp) { //北京时间相差8小时 DateTime dt1970 = new DateTime(1970, 1, 1, 8, 0, 0, 0); return new DateTime((Convert.ToInt64(timestamp) * 10000) + dt1970.Ticks); }
调用方法:
Console.WriteLine(DateToTicks(DateTime.Now)); Console.WriteLine(TicksToDate(1490818222045));