Skip to content

Commit 5626442

Browse files
committed
fix(Utility): 修复时间戳转换方法中的时区处理逻辑
- 修正 MillisecondsTimeStampToDateTime 方法,移除重复的 return 语句 - 修正 TimestampToDateTime 方法,使用 TimeZoneInfo.ConvertTimeFromUtc 进行时区转换 - 更新 UtcSecondsToLocalDateTime 和 UtcMillisecondsToDateTime 方法,使用 CurrentTimeZone 而非系统时区 - 更新相关注释以反映时区处理逻辑的变更
1 parent 9088c95 commit 5626442

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public partial class TimerHelper
4141
/// </summary>
4242
/// <param name="timestamp">毫秒时间戳。</param>
4343
/// <param name="utc">是否使用UTC时间。</param>
44-
/// <returns>转换后的时间。</returns>
44+
/// <returns>转换后的时间。如果utc为false,则返回当前时区 (<see cref="CurrentTimeZone"/>) 的时间。</returns>
4545
public static DateTime MillisecondsTimeStampToDateTime(long timestamp, bool utc = false)
4646
{
4747
var dateTime = EpochUtc.AddMilliseconds(timestamp);
@@ -51,23 +51,23 @@ public static DateTime MillisecondsTimeStampToDateTime(long timestamp, bool utc
5151
}
5252

5353
return TimeZoneInfo.ConvertTimeFromUtc(dateTime, CurrentTimeZone);
54-
return EpochLocal.AddMilliseconds(timestamp);
5554
}
5655

5756
/// <summary>
5857
/// 秒时间戳转时间
5958
/// </summary>
6059
/// <param name="timestamp">秒时间戳。</param>
6160
/// <param name="utc">是否使用UTC时间。</param>
62-
/// <returns>转换后的时间。</returns>
61+
/// <returns>转换后的时间。如果utc为false,则返回当前时区 (<see cref="CurrentTimeZone"/>) 的时间。</returns>
6362
public static DateTime TimestampToDateTime(long timestamp, bool utc = false)
6463
{
64+
var dateTime = EpochUtc.AddSeconds(timestamp);
6565
if (utc)
6666
{
67-
return EpochUtc.AddSeconds(timestamp);
67+
return dateTime;
6868
}
6969

70-
return EpochLocal.AddSeconds(timestamp);
70+
return TimeZoneInfo.ConvertTimeFromUtc(dateTime, CurrentTimeZone);
7171
}
7272

7373
/// <summary>
@@ -254,11 +254,11 @@ public static DateTime UtcMillisecondsToUtcDateTime(long utcTimestampMillisecond
254254
/// <remarks>
255255
/// 此方法将Unix时间戳(从1970-01-01 00:00:00 UTC开始的秒数)转换为本地时区的DateTime
256256
/// 使用DateTimeOffset.FromUnixTimeSeconds进行转换
257-
/// 返回的时间会根据系统时区自动调整
257+
/// 返回的时间会根据当前设置的时区 (<see cref="CurrentTimeZone"/>) 自动调整
258258
/// </remarks>
259259
public static DateTime UtcSecondsToLocalDateTime(long utcTimestamp)
260260
{
261-
return DateTimeOffset.FromUnixTimeSeconds(utcTimestamp).LocalDateTime;
261+
return TimeZoneInfo.ConvertTimeFromUtc(DateTimeOffset.FromUnixTimeSeconds(utcTimestamp).UtcDateTime, CurrentTimeZone);
262262
}
263263

264264
/// <summary>
@@ -269,11 +269,11 @@ public static DateTime UtcSecondsToLocalDateTime(long utcTimestamp)
269269
/// <remarks>
270270
/// 此方法将Unix毫秒时间戳(从1970-01-01 00:00:00 UTC开始的毫秒数)转换为本地时区的DateTime
271271
/// 使用DateTimeOffset.FromUnixTimeMilliseconds进行转换
272-
/// 返回的时间会根据系统时区自动调整
272+
/// 返回的时间会根据当前设置的时区 (<see cref="CurrentTimeZone"/>) 自动调整
273273
/// </remarks>
274274
public static DateTime UtcMillisecondsToDateTime(long utcTimestampMilliseconds)
275275
{
276-
return DateTimeOffset.FromUnixTimeMilliseconds(utcTimestampMilliseconds).LocalDateTime;
276+
return TimeZoneInfo.ConvertTimeFromUtc(DateTimeOffset.FromUnixTimeMilliseconds(utcTimestampMilliseconds).UtcDateTime, CurrentTimeZone);
277277
}
278278

279279
/// <summary>

0 commit comments

Comments
 (0)