Skip to content

Commit ebe8119

Browse files
committed
feat(utility): 添加基于时区的年度时间戳计算方法
添加 GetYearStartTimestampWithTimeZone、GetYearEndTimestampWithTimeZone 等方法,用于返回包含时区偏移的 Unix 时间戳。同时重构原有方法,使用统一的 DateTimeToUnixTimeSeconds 辅助方法,提高代码复用性。
1 parent 30d21d8 commit ebe8119

1 file changed

Lines changed: 54 additions & 4 deletions

File tree

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

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,19 @@ public static DateTime GetYearStartTime()
6767
public static long GetYearStartTimestamp()
6868
{
6969
var time = GetYearStartTime();
70-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
70+
return DateTimeToUnixTimeSeconds(time);
71+
}
72+
73+
/// <summary>
74+
/// 获取本年开始时间戳(基于设置时区)
75+
/// </summary>
76+
/// <returns>本年1月1日零点时间戳(秒) + 时区偏移</returns>
77+
/// <remarks>
78+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
79+
/// </remarks>
80+
public static long GetYearStartTimestampWithTimeZone()
81+
{
82+
return TimeToSecondsWithTimeZone(GetYearStartTime());
7183
}
7284

7385
/// <summary>
@@ -96,7 +108,19 @@ public static DateTime GetYearEndTime()
96108
public static long GetYearEndTimestamp()
97109
{
98110
var time = GetYearEndTime();
99-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
111+
return DateTimeToUnixTimeSeconds(time);
112+
}
113+
114+
/// <summary>
115+
/// 获取本年结束时间戳(基于设置时区)
116+
/// </summary>
117+
/// <returns>本年12月31日23:59:59的时间戳(秒) + 时区偏移</returns>
118+
/// <remarks>
119+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
120+
/// </remarks>
121+
public static long GetYearEndTimestampWithTimeZone()
122+
{
123+
return TimeToSecondsWithTimeZone(GetYearEndTime());
100124
}
101125

102126
/// <summary>
@@ -127,7 +151,20 @@ public static DateTime GetStartTimeOfYear(DateTime date)
127151
public static long GetStartTimestampOfYear(DateTime date)
128152
{
129153
var time = GetStartTimeOfYear(date);
130-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
154+
return DateTimeToUnixTimeSeconds(time);
155+
}
156+
157+
/// <summary>
158+
/// 获取指定日期所在年的开始时间戳(基于设置时区)
159+
/// </summary>
160+
/// <param name="date">指定日期</param>
161+
/// <returns>所在年1月1日零点时间戳(秒) + 时区偏移</returns>
162+
/// <remarks>
163+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
164+
/// </remarks>
165+
public static long GetStartTimestampOfYearWithTimeZone(DateTime date)
166+
{
167+
return TimeToSecondsWithTimeZone(GetStartTimeOfYear(date));
131168
}
132169

133170
/// <summary>
@@ -158,6 +195,19 @@ public static DateTime GetEndTimeOfYear(DateTime date)
158195
public static long GetEndTimestampOfYear(DateTime date)
159196
{
160197
var time = GetEndTimeOfYear(date);
161-
return new DateTimeOffset(time, CurrentTimeZone.GetUtcOffset(time)).ToUnixTimeSeconds();
198+
return DateTimeToUnixTimeSeconds(time);
199+
}
200+
201+
/// <summary>
202+
/// 获取指定日期所在年的结束时间戳(基于设置时区)
203+
/// </summary>
204+
/// <param name="date">指定日期</param>
205+
/// <returns>所在年12月31日23:59:59的时间戳(秒) + 时区偏移</returns>
206+
/// <remarks>
207+
/// 返回值 = 标准Unix时间戳 + 时区偏移秒数
208+
/// </remarks>
209+
public static long GetEndTimestampOfYearWithTimeZone(DateTime date)
210+
{
211+
return TimeToSecondsWithTimeZone(GetEndTimeOfYear(date));
162212
}
163213
}

0 commit comments

Comments
 (0)