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; } } }