28 lines
852 B
C#
28 lines
852 B
C#
using System;
|
|
|
|
namespace BF
|
|
{
|
|
public static class TimeHelper
|
|
{
|
|
public static long GetDayBeginTimestamp(long timestamp, int timeZoneOffset)
|
|
{
|
|
// 将时间戳转换为UTC时间
|
|
DateTime utcTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).UtcDateTime;
|
|
// 应用时区偏移(不考虑夏令时)
|
|
if (timeZoneOffset != 0)
|
|
{
|
|
utcTime = utcTime.AddHours(timeZoneOffset);
|
|
}
|
|
// 构造当天0点的UTC时间
|
|
DateTime utcDayBegin = new DateTime(utcTime.Year, utcTime.Month, utcTime.Day, 0, 0, 0, DateTimeKind.Utc);
|
|
// 减去时区偏移量恢复UTC时间
|
|
if (timeZoneOffset != 0)
|
|
{
|
|
utcDayBegin = utcDayBegin.AddHours(-timeZoneOffset);
|
|
}
|
|
// 转换为时间戳并减去时区偏移
|
|
long utcDayBeginTimestamp = new DateTimeOffset(utcDayBegin).ToUnixTimeSeconds();
|
|
return utcDayBeginTimestamp;
|
|
}
|
|
}
|
|
} |