Skip to content

Commit 88a4df3

Browse files
committed
feat(utility): 添加基于时区的周时间戳计算方法
新增 GetWeekStartTimestampWithTimeZone、GetWeekEndTimestampWithTimeZone 等方法,提供包含时区偏移的时间戳计算。同时重构原有方法使用 DateTimeToUnixTimeSeconds 和 TimeToSecondsWithTimeZone 辅助方法,提高代码复用性。
1 parent ebe8119 commit 88a4df3

1 file changed

Lines changed: 77 additions & 6 deletions

File tree

GameFrameX.Foundation.Utility/Time/TimerHelper.Week.cs

Lines changed: 77 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,19 @@ public static DateTime GetWeekStartTime()
266266
public static long GetWeekStartTimestamp()
267267
{
268268
var time = GetWeekStartTime();
269-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
269+
return DateTimeToUnixTimeSeconds(time);
270+
}
271+
272+
/// <summary>
273+
/// 获取本周开始时间戳(基于设置时区)
274+
/// </summary>
275+
/// <returns>本周一零点时间戳(秒) + 时区偏移</returns>
276+
/// <remarks>
277+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
278+
/// </remarks>
279+
public static long GetWeekStartTimestampWithTimeZone()
280+
{
281+
return TimeToSecondsWithTimeZone(GetWeekStartTime());
270282
}
271283

272284
/// <summary>
@@ -295,9 +307,20 @@ public static DateTime GetWeekEndTime()
295307
public static long GetWeekEndTimestamp()
296308
{
297309
var time = GetWeekEndTime();
298-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
310+
return DateTimeToUnixTimeSeconds(time);
299311
}
300312

313+
/// <summary>
314+
/// 获取本周结束时间戳(基于设置时区)
315+
/// </summary>
316+
/// <returns>本周日23:59:59的时间戳(秒) + 时区偏移</returns>
317+
/// <remarks>
318+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
319+
/// </remarks>
320+
public static long GetWeekEndTimestampWithTimeZone()
321+
{
322+
return TimeToSecondsWithTimeZone(GetWeekEndTime());
323+
}
301324

302325
/// <summary>
303326
/// 获取指定日期所在周的开始时间
@@ -330,9 +353,21 @@ public static DateTime GetStartTimeOfWeek(DateTime date)
330353
public static long GetStartTimestampOfWeek(DateTime date)
331354
{
332355
var time = GetStartTimeOfWeek(date);
333-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
356+
return DateTimeToUnixTimeSeconds(time);
334357
}
335358

359+
/// <summary>
360+
/// 获取指定日期所在周的开始时间戳(基于设置时区)
361+
/// </summary>
362+
/// <param name="date">指定日期</param>
363+
/// <returns>所在周周一零点时间戳(秒) + 时区偏移</returns>
364+
/// <remarks>
365+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
366+
/// </remarks>
367+
public static long GetStartTimestampOfWeekWithTimeZone(DateTime date)
368+
{
369+
return TimeToSecondsWithTimeZone(GetStartTimeOfWeek(date));
370+
}
336371

337372
/// <summary>
338373
/// 获取下周开始时间
@@ -360,7 +395,19 @@ public static DateTime GetNextWeekStartTime()
360395
public static long GetNextWeekStartTimestamp()
361396
{
362397
var time = GetNextWeekStartTime();
363-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
398+
return DateTimeToUnixTimeSeconds(time);
399+
}
400+
401+
/// <summary>
402+
/// 获取下周开始时间戳(基于设置时区)
403+
/// </summary>
404+
/// <returns>下周一零点时间戳(秒) + 时区偏移</returns>
405+
/// <remarks>
406+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
407+
/// </remarks>
408+
public static long GetNextWeekStartTimestampWithTimeZone()
409+
{
410+
return TimeToSecondsWithTimeZone(GetNextWeekStartTime());
364411
}
365412

366413
/// <summary>
@@ -389,9 +436,20 @@ public static DateTime GetNextWeekEndTime()
389436
public static long GetNextWeekEndTimestamp()
390437
{
391438
var time = GetNextWeekEndTime();
392-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
439+
return DateTimeToUnixTimeSeconds(time);
393440
}
394441

442+
/// <summary>
443+
/// 获取下周结束时间戳(基于设置时区)
444+
/// </summary>
445+
/// <returns>下周日23:59:59的时间戳(秒) + 时区偏移</returns>
446+
/// <remarks>
447+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
448+
/// </remarks>
449+
public static long GetNextWeekEndTimestampWithTimeZone()
450+
{
451+
return TimeToSecondsWithTimeZone(GetNextWeekEndTime());
452+
}
395453

396454
/// <summary>
397455
/// 获取指定日期所在周的结束时间
@@ -422,6 +480,19 @@ public static DateTime GetEndTimeOfWeek(DateTime date)
422480
public static long GetEndTimestampOfWeek(DateTime date)
423481
{
424482
var time = GetEndTimeOfWeek(date);
425-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
483+
return DateTimeToUnixTimeSeconds(time);
484+
}
485+
486+
/// <summary>
487+
/// 获取指定日期所在周的结束时间戳(基于设置时区)
488+
/// </summary>
489+
/// <param name="date">指定日期</param>
490+
/// <returns>所在周周日23:59:59的时间戳(秒) + 时区偏移</returns>
491+
/// <remarks>
492+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
493+
/// </remarks>
494+
public static long GetEndTimestampOfWeekWithTimeZone(DateTime date)
495+
{
496+
return TimeToSecondsWithTimeZone(GetEndTimeOfWeek(date));
426497
}
427498
}

0 commit comments

Comments
 (0)