@@ -77,7 +77,20 @@ public static DateTime GetTodayStartTime()
7777 public static long GetTodayStartTimestamp ( )
7878 {
7979 var date = GetTodayStartTime ( ) ;
80- return new DateTimeOffset ( date , CurrentTimeZone . GetUtcOffset ( date ) ) . ToUnixTimeSeconds ( ) ;
80+ return DateTimeToUnixTimeSeconds ( date ) ;
81+ }
82+
83+ /// <summary>
84+ /// 获取今天开始时间戳(基于设置时区)
85+ /// </summary>
86+ /// <returns>今天零点时间戳(秒) + 时区偏移</returns>
87+ /// <remarks>
88+ /// 返回值 = 标准Unix时间戳 + 时区偏移秒数
89+ /// 适用于需要伪造本地时间戳的场景
90+ /// </remarks>
91+ public static long GetTodayStartTimestampWithTimeZone ( )
92+ {
93+ return TimeToSecondsWithTimeZone ( GetTodayStartTime ( ) ) ;
8194 }
8295
8396 /// <summary>
@@ -106,9 +119,20 @@ public static DateTime GetTodayEndTime()
106119 public static long GetTodayEndTimestamp ( )
107120 {
108121 var date = GetTodayEndTime ( ) ;
109- return new DateTimeOffset ( date , CurrentTimeZone . GetUtcOffset ( date ) ) . ToUnixTimeSeconds ( ) ;
122+ return DateTimeToUnixTimeSeconds ( date ) ;
110123 }
111124
125+ /// <summary>
126+ /// 获取今天结束时间戳(基于设置时区)
127+ /// </summary>
128+ /// <returns>今天23:59:59的时间戳(秒) + 时区偏移</returns>
129+ /// <remarks>
130+ /// 返回值 = 标准Unix时间戳 + 时区偏移秒数
131+ /// </remarks>
132+ public static long GetTodayEndTimestampWithTimeZone ( )
133+ {
134+ return TimeToSecondsWithTimeZone ( GetTodayEndTime ( ) ) ;
135+ }
112136
113137 /// <summary>
114138 /// 获取指定日期的开始时间
@@ -138,21 +162,20 @@ public static DateTime GetStartTimeOfDay(DateTime date)
138162 public static long GetStartTimestampOfDay ( DateTime date )
139163 {
140164 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- }
165+ return DateTimeToUnixTimeSeconds ( targetDate ) ;
166+ }
154167
155- return new DateTimeOffset ( targetDate , offset ) . ToUnixTimeSeconds ( ) ;
168+ /// <summary>
169+ /// 获取指定日期的开始时间戳(基于设置时区)
170+ /// </summary>
171+ /// <param name="date">指定日期</param>
172+ /// <returns>指定日期零点时间戳(秒) + 时区偏移</returns>
173+ /// <remarks>
174+ /// 返回值 = 标准Unix时间戳 + 时区偏移秒数
175+ /// </remarks>
176+ public static long GetStartTimestampOfDayWithTimeZone ( DateTime date )
177+ {
178+ return TimeToSecondsWithTimeZone ( GetStartTimeOfDay ( date ) ) ;
156179 }
157180
158181 /// <summary>
@@ -183,21 +206,20 @@ public static DateTime GetEndTimeOfDay(DateTime date)
183206 public static long GetEndTimestampOfDay ( DateTime date )
184207 {
185208 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- }
209+ return DateTimeToUnixTimeSeconds ( targetDate ) ;
210+ }
199211
200- return new DateTimeOffset ( targetDate , offset ) . ToUnixTimeSeconds ( ) ;
212+ /// <summary>
213+ /// 获取指定日期的结束时间戳(基于设置时区)
214+ /// </summary>
215+ /// <param name="date">指定日期</param>
216+ /// <returns>指定日期23:59:59的时间戳(秒) + 时区偏移</returns>
217+ /// <remarks>
218+ /// 返回值 = 标准Unix时间戳 + 时区偏移秒数
219+ /// </remarks>
220+ public static long GetEndTimestampOfDayWithTimeZone ( DateTime date )
221+ {
222+ return TimeToSecondsWithTimeZone ( GetEndTimeOfDay ( date ) ) ;
201223 }
202224
203225 /// <summary>
@@ -227,7 +249,19 @@ public static DateTime GetTomorrowStartTime()
227249 public static long GetTomorrowStartTimestamp ( )
228250 {
229251 var date = GetTomorrowStartTime ( ) ;
230- return new DateTimeOffset ( date , CurrentTimeZone . GetUtcOffset ( date ) ) . ToUnixTimeSeconds ( ) ;
252+ return DateTimeToUnixTimeSeconds ( date ) ;
253+ }
254+
255+ /// <summary>
256+ /// 获取明天开始时间戳(基于设置时区)
257+ /// </summary>
258+ /// <returns>明天零点时间戳(秒) + 时区偏移</returns>
259+ /// <remarks>
260+ /// 返回值 = 标准Unix时间戳 + 时区偏移秒数
261+ /// </remarks>
262+ public static long GetTomorrowStartTimestampWithTimeZone ( )
263+ {
264+ return TimeToSecondsWithTimeZone ( GetTomorrowStartTime ( ) ) ;
231265 }
232266
233267 /// <summary>
@@ -255,9 +289,20 @@ public static DateTime GetTomorrowEndTime()
255289 /// </remarks>
256290 public static long GetTomorrowEndTimestamp ( )
257291 {
258- return new DateTimeOffset ( GetTomorrowEndTime ( ) ) . ToUnixTimeSeconds ( ) ;
292+ return DateTimeToUnixTimeSeconds ( GetTomorrowEndTime ( ) ) ;
259293 }
260294
295+ /// <summary>
296+ /// 获取明天结束时间戳(基于设置时区)
297+ /// </summary>
298+ /// <returns>明天23:59:59的时间戳(秒) + 时区偏移</returns>
299+ /// <remarks>
300+ /// 返回值 = 标准Unix时间戳 + 时区偏移秒数
301+ /// </remarks>
302+ public static long GetTomorrowEndTimestampWithTimeZone ( )
303+ {
304+ return TimeToSecondsWithTimeZone ( GetTomorrowEndTime ( ) ) ;
305+ }
261306
262307 /// <summary>
263308 /// 按照当前时区 (<see cref="CurrentTimeZone"/>) 时间判断两个时间戳是否是同一天
0 commit comments