Daylight Saving Time
Wiki Pedia定义如下:
夏时制,又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的國家具体规定不同。目前全世界有近110个国家每年要实行夏令时。
美國原本於每年4月的第一個星期日凌晨2時起至10月的最後一個星期日凌晨2時實施夏令時間;但經美國國會2005年通過的能源法案,自2007年起延長夏令時間,開始日期從每年4月的第一個星期日,提前到3月的第二個星期日,結束日期從每年10月的最後一個星期日,延後到11月的第一個星期日。
夏令时开始,时间往前拨1个小时。
夏令时结束,时间回拨1个小时
判断某个时间(默认该时间时区有实行夏令时)是否在夏令时内,代码实现如下:
private static bool IsDuringDaylightSavingTime(DateTime dt)
{
bool b = false;
DateTime DSTStart = new DateTime(dt.Year, 3, 1);
DateTime DSTEnd = new DateTime(dt.Year, 11, 1);
int startWeekIndex = (int)DSTStart.DayOfWeek;
int endWeekIndex = (int)DSTEnd.DayOfWeek;
int dayOfSecondSunday;
int dayOfFirstSunday;
if (startWeekIndex == 0)
{
dayOfSecondSunday = 7 - startWeekIndex + 1;
}
else
{
dayOfSecondSunday = 14 - startWeekIndex + 1;
}
if (endWeekIndex == 0)
{
dayOfFirstSunday = 1;
}
else
{
dayOfFirstSunday = 7 - endWeekIndex + 1;
}
DSTStart = new DateTime(DSTStart.Year, DSTStart.Month, dayOfSecondSunday, 2, 0, 0);
DSTEnd = new DateTime(DSTEnd.Year, DSTEnd.Month, dayOfFirstSunday, 2, 0, 0);
if (dt.CompareTo(DSTStart) > 0 && dt.CompareTo(DSTEnd) < 0)
{
b = true;
}
return b;
}
{
bool b = false;
DateTime DSTStart = new DateTime(dt.Year, 3, 1);
DateTime DSTEnd = new DateTime(dt.Year, 11, 1);
int startWeekIndex = (int)DSTStart.DayOfWeek;
int endWeekIndex = (int)DSTEnd.DayOfWeek;
int dayOfSecondSunday;
int dayOfFirstSunday;
if (startWeekIndex == 0)
{
dayOfSecondSunday = 7 - startWeekIndex + 1;
}
else
{
dayOfSecondSunday = 14 - startWeekIndex + 1;
}
if (endWeekIndex == 0)
{
dayOfFirstSunday = 1;
}
else
{
dayOfFirstSunday = 7 - endWeekIndex + 1;
}
DSTStart = new DateTime(DSTStart.Year, DSTStart.Month, dayOfSecondSunday, 2, 0, 0);
DSTEnd = new DateTime(DSTEnd.Year, DSTEnd.Month, dayOfFirstSunday, 2, 0, 0);
if (dt.CompareTo(DSTStart) > 0 && dt.CompareTo(DSTEnd) < 0)
{
b = true;
}
return b;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端