C#的DateTimeOffset结构体默认会自动处理夏令时的变化,但在进行时间戳的比较时会出现问题。解决方法是使用ToOffset(TimeSpan)方法将DateTimeOffset转换为一个指定时区的DateTimeOffset,再进行比较。
代码示例: DateTimeOffset dto1 = new DateTimeOffset(2021, 6, 1, 12, 0, 0, new TimeSpan(-7, 0, 0)); // Pacific Standard Time DateTimeOffset dto2 = new DateTimeOffset(2021, 6, 1, 15, 0, 0, new TimeSpan(-4, 0, 0)); // Eastern Daylight Time
// 判断两个时间戳是否相等 bool isEqual = dto1.ToOffset(dto2.Offset) == dto2.ToOffset(dto1.Offset);