【发布时间】:2021-09-24 01:52:49
【问题描述】:
这里的 DateTimeOffset 实例代表相同的时间,但一个实例有 DST 而另一个没有。 我想比较没有 DST 的实例,所以结果是 True。
using System;
var today = DateTime.Today;
// Today YYYY-MM-01
var firstDayMonth = new DateTimeOffset(
new DateTime(today.Year, today.Month, 1, 0, 0, 0, today.Kind).AddHours(12));
// Add year offset from 2000
DateTimeOffset withYearOffset = firstDayMonth.AddYears(2000 - firstDayMonth.Year);
// Add month offset from 1
var withMonthOffset = withYearOffset.AddMonths(1 - withYearOffset.Month);
// Add day offset from 1
var calculated_dt_2000_1_1_12_0_0 = withMonthOffset.AddDays(1 - withMonthOffset.Day);
// 01.01.2000 12:00:00 +03:00
Console.WriteLine(calculated_dt_2000_1_1_12_0_0);
var dt_2000_1_1_12_0_0 = new DateTimeOffset(new DateTime(2000, 1, 1).AddHours(12));
// 01.01.2000 12:00:00 + 02:00
Console.WriteLine(dt_2000_1_1_12_0_0);
// False
Console.WriteLine(calculated_dt_2000_1_1_12_0_0.Equals(dt_2000_1_1_12_0_0));
【问题讨论】:
-
你可能需要用
TimeZoneInfo做点什么。 -
“一个实例有 DST 而另一个没有” - 但它比只是 DST 差异更明显。您已经计算了 DST 生效的中午,并且您还计算了 DST 无效的中午。从字面上看,那些时间不是同一时间。
标签: c# datetime datetimeoffset