【发布时间】:2018-06-13 05:25:42
【问题描述】:
我只是想确定给定日期是否属于夏令时。 2017 年,11 月 5 日凌晨 2:00 应该是触发因素。
- 如果我的输入是 2017 年 11 月 5 日 00:00:00,则输出对于 DST 为 true
- 如果我的输入是 11/5/17 01:00:00,则 DST 的输出为 false
我预计凌晨 1 点是真的,而凌晨 2 点对于 DST 来说是假的
这是我的代码
var dateTime = new DateTime(2017,11,5,0,0,0);
var targetTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
if (targetTimeZone.IsDaylightSavingTime(dateTime)) {
Console.WriteLine("Daylight Saving Time");
}
【问题讨论】:
-
考虑到凌晨 1 点发生了两次。您需要在创建
DateTime时告诉它是哪一个。 -
有趣,如何做到这一点?
-
IsAmbiguousTime会更清楚地帮助您reason,但如果您拥有的只是DateTime而不是Utc,则无能为力关于它 - 没有人知道Localdatetime 值代表哪个时间点。 -
像这样的东西正是创建 NodaTime 的原因。你可以考虑研究一下。
-
考虑在您的数据库中使用 UTC 时间,并将其向用户显示的时间更改为本地时间。