@@ -57,12 +57,12 @@ public static bool IsUnixSameDay(long timestamp1, long timestamp2)
5757 /// <returns>今天零点时间</returns>
5858 /// <remarks>
5959 /// 此方法返回当天的零点时间(00:00:00)
60- /// 使用DateTime.Today获取当前日期的零点时间
61- /// 返回的是本地时区的时间
60+ /// 使用 <see cref="GetNow"/> 获取当前日期的零点时间
61+ /// 返回的是 <see cref="CurrentTimeZone"/> 时区的时间
6262 /// </remarks>
6363 public static DateTime GetTodayStartTime ( )
6464 {
65- return DateTime . Today ;
65+ return GetNow ( ) . Date ;
6666 }
6767
6868 /// <summary>
@@ -71,12 +71,13 @@ public static DateTime GetTodayStartTime()
7171 /// <returns>今天零点时间戳(秒)</returns>
7272 /// <remarks>
7373 /// 此方法返回当天零点时间的Unix时间戳
74- /// 先获取本地时区的今天零点时间 ,然后转换为时间戳
74+ /// 先获取 <see cref="CurrentTimeZone"/> 时区的今天零点时间 ,然后转换为时间戳
7575 /// 返回从1970-01-01 00:00:00 UTC开始的秒数
7676 /// </remarks>
7777 public static long GetTodayStartTimestamp ( )
7878 {
79- return new DateTimeOffset ( GetTodayStartTime ( ) ) . ToUnixTimeSeconds ( ) ;
79+ var date = GetTodayStartTime ( ) ;
80+ return new DateTimeOffset ( date , CurrentTimeZone . GetUtcOffset ( date ) ) . ToUnixTimeSeconds ( ) ;
8081 }
8182
8283 /// <summary>
@@ -86,11 +87,11 @@ public static long GetTodayStartTimestamp()
8687 /// <remarks>
8788 /// 此方法返回当天的最后一秒(23:59:59)
8889 /// 通过获取明天零点时间然后减去1秒来计算
89- /// 返回的是本地时区的时间
90+ /// 返回的是 <see cref="CurrentTimeZone"/> 时区的时间
9091 /// </remarks>
9192 public static DateTime GetTodayEndTime ( )
9293 {
93- return DateTime . Today . AddDays ( 1 ) . AddSeconds ( - 1 ) ;
94+ return GetTodayStartTime ( ) . AddDays ( 1 ) . AddSeconds ( - 1 ) ;
9495 }
9596
9697 /// <summary>
@@ -99,12 +100,13 @@ public static DateTime GetTodayEndTime()
99100 /// <returns>今天23:59:59的时间戳(秒)</returns>
100101 /// <remarks>
101102 /// 此方法返回当天最后一秒的Unix时间戳
102- /// 先获取本地时区的今天23 :59:59,然后转换为时间戳
103+ /// 先获取 <see cref="CurrentTimeZone"/> 时区的今天23 :59:59,然后转换为时间戳
103104 /// 返回从1970-01-01 00:00:00 UTC开始的秒数
104105 /// </remarks>
105106 public static long GetTodayEndTimestamp ( )
106107 {
107- return new DateTimeOffset ( GetTodayEndTime ( ) ) . ToUnixTimeSeconds ( ) ;
108+ var date = GetTodayEndTime ( ) ;
109+ return new DateTimeOffset ( date , CurrentTimeZone . GetUtcOffset ( date ) ) . ToUnixTimeSeconds ( ) ;
108110 }
109111
110112
@@ -135,7 +137,22 @@ public static DateTime GetStartTimeOfDay(DateTime date)
135137 /// </remarks>
136138 public static long GetStartTimestampOfDay ( DateTime date )
137139 {
138- return new DateTimeOffset ( GetStartTimeOfDay ( date ) ) . ToUnixTimeSeconds ( ) ;
140+ var targetDate = GetStartTimeOfDay ( date ) ;
141+ TimeSpan offset ;
142+ if ( targetDate . Kind == DateTimeKind . Utc )
143+ {
144+ offset = TimeSpan . Zero ;
145+ }
146+ else if ( targetDate . Kind == DateTimeKind . Local )
147+ {
148+ offset = TimeZoneInfo . Local . GetUtcOffset ( targetDate ) ;
149+ }
150+ else
151+ {
152+ offset = CurrentTimeZone . GetUtcOffset ( targetDate ) ;
153+ }
154+
155+ return new DateTimeOffset ( targetDate , offset ) . ToUnixTimeSeconds ( ) ;
139156 }
140157
141158 /// <summary>
@@ -165,7 +182,22 @@ public static DateTime GetEndTimeOfDay(DateTime date)
165182 /// </remarks>
166183 public static long GetEndTimestampOfDay ( DateTime date )
167184 {
168- return new DateTimeOffset ( GetEndTimeOfDay ( date ) ) . ToUnixTimeSeconds ( ) ;
185+ var targetDate = GetEndTimeOfDay ( date ) ;
186+ TimeSpan offset ;
187+ if ( targetDate . Kind == DateTimeKind . Utc )
188+ {
189+ offset = TimeSpan . Zero ;
190+ }
191+ else if ( targetDate . Kind == DateTimeKind . Local )
192+ {
193+ offset = TimeZoneInfo . Local . GetUtcOffset ( targetDate ) ;
194+ }
195+ else
196+ {
197+ offset = CurrentTimeZone . GetUtcOffset ( targetDate ) ;
198+ }
199+
200+ return new DateTimeOffset ( targetDate , offset ) . ToUnixTimeSeconds ( ) ;
169201 }
170202
171203 /// <summary>
@@ -175,11 +207,11 @@ public static long GetEndTimestampOfDay(DateTime date)
175207 /// <remarks>
176208 /// 此方法返回明天的零点时间
177209 /// 例如:当前是2024-01-10,返回2024-01-11 00:00:00
178- /// 使用本地时区计算时间
210+ /// 使用 <see cref="CurrentTimeZone"/> 时区计算时间
179211 /// </remarks>
180212 public static DateTime GetTomorrowStartTime ( )
181213 {
182- return DateTime . Today . AddDays ( 1 ) ;
214+ return GetTodayStartTime ( ) . AddDays ( 1 ) ;
183215 }
184216
185217 /// <summary>
@@ -189,11 +221,13 @@ public static DateTime GetTomorrowStartTime()
189221 /// <remarks>
190222 /// 此方法返回明天零点时间的Unix时间戳
191223 /// 例如:当前是2024-01-10,返回2024-01-11 00:00:00的时间戳
224+ /// 使用 <see cref="CurrentTimeZone"/> 时区计算时间
192225 /// 会将时间转换为UTC时间后再计算时间戳
193226 /// </remarks>
194227 public static long GetTomorrowStartTimestamp ( )
195228 {
196- return new DateTimeOffset ( GetTomorrowStartTime ( ) ) . ToUnixTimeSeconds ( ) ;
229+ var date = GetTomorrowStartTime ( ) ;
230+ return new DateTimeOffset ( date , CurrentTimeZone . GetUtcOffset ( date ) ) . ToUnixTimeSeconds ( ) ;
197231 }
198232
199233 /// <summary>
0 commit comments