فهرست منبع

Merge pull request #9 from yzpopulation/master

修复时间戳
懒得勤快 5 سال پیش
والد
کامیت
2990af12a6
1فایلهای تغییر یافته به همراه9 افزوده شده و 11 حذف شده
  1. 9 11
      Masuit.Tools/DateTimeExt/DateUtil.cs

+ 9 - 11
Masuit.Tools/DateTimeExt/DateUtil.cs

@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Diagnostics;
 
 namespace Masuit.Tools.DateTimeExt
@@ -8,8 +8,6 @@ namespace Masuit.Tools.DateTimeExt
     /// </summary>
     public static class DateUtil
     {
-        private static readonly DateTime Start1970 = DateTime.Parse("1970-01-01 00:00:00");
-
         /// <summary>
         /// 返回相对于当前时间的相对天数
         /// </summary>
@@ -55,49 +53,49 @@ namespace Masuit.Tools.DateTimeExt
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
-        public static double GetTotalSeconds(this DateTime dt) => (dt - Start1970).TotalSeconds;
+        public static double GetTotalSeconds(this DateTime dt) => new DateTimeOffset(dt).ToUnixTimeSeconds();
 
         /// <summary>
         /// 获取该时间相对于1970-01-01 00:00:00的毫秒数
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
-        public static double GetTotalMilliseconds(this DateTime dt) => (dt - Start1970).TotalMilliseconds;
+        public static double GetTotalMilliseconds(this DateTime dt) => new DateTimeOffset(dt).ToUnixTimeMilliseconds();
 
         /// <summary>
         /// 获取该时间相对于1970-01-01 00:00:00的微秒时间戳
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
-        public static long GetTotalMicroseconds(this DateTime dt) => (dt - Start1970).Ticks / 10;
+        public static long GetTotalMicroseconds(this DateTime dt) => new DateTimeOffset(dt).Ticks / 10;
 
         /// <summary>
         /// 获取该时间相对于1970-01-01 00:00:00的纳秒时间戳
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
-        public static long GetTotalNanoseconds(this DateTime dt) => (dt - Start1970).Ticks * 100 + Stopwatch.GetTimestamp() % 100;
+        public static long GetTotalNanoseconds(this DateTime dt) => new DateTimeOffset(dt).Ticks * 100 + Stopwatch.GetTimestamp() % 100;
 
         /// <summary>
         /// 获取该时间相对于1970-01-01 00:00:00的分钟数
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
-        public static double GetTotalMinutes(this DateTime dt) => (dt - Start1970).TotalMinutes;
+        public static double GetTotalMinutes(this DateTime dt) => new DateTimeOffset(dt).Offset.TotalMinutes;
 
         /// <summary>
         /// 获取该时间相对于1970-01-01 00:00:00的小时数
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
-        public static double GetTotalHours(this DateTime dt) => (dt - Start1970).TotalHours;
+        public static double GetTotalHours(this DateTime dt) => new DateTimeOffset(dt).Offset.TotalHours;
 
         /// <summary>
         /// 获取该时间相对于1970-01-01 00:00:00的天数
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
-        public static double GetTotalDays(this DateTime dt) => (dt - Start1970).TotalDays;
+        public static double GetTotalDays(this DateTime dt) => new DateTimeOffset(dt).Offset.TotalDays;
 
         /// <summary>
         /// 返回本年有多少天
@@ -227,4 +225,4 @@ namespace Masuit.Tools.DateTimeExt
             return result.CompareTo(DateTime.Parse("1800-1-1")) > 0;
         }
     }
-}
+}