美国东部时间和北京时间之间的转换
美国东部时间在UTC-5时区,北京时间是UTC+8时区,正常情况下美东时间比北京时间晚13个小时。需要注意的是美国有夏令时,而北京没有夏令时,美国夏令时时会让时间快一个小时,让人民早起早睡,所以在美国实行夏令时时美东时间比北京时间晚12个小时。
逻辑如上所述,代码如下
/// <summary> /// AMESTime 的摘要说明: /// 美东时间的转换 /// /// 美东时间在UTC-5时区,美国有夏时制,即在夏令时启用之后美东时间比起所在时区早一个小时,即UTC-4 /// 在未使用夏令时时美东时间比北京时间(UTC+8时区)晚13个小时,在启用夏令时时美东时间比北京时间晚12个小时 /// /// /// 美国国会2005年通过的能源法案,夏令时时段:从2007年开始每年3月的第二个星期日开始夏令时,结束日期为11月的第一个星期日。 /// </summary> public class AMESTime { private static DateTime _thisYearDaylightSavingTimeStart, _thisYearDaylightSavingTimeEnd; private const int TIMEZONE_OFFSET_DAY_SAVING_LIGHT = -12; private const int TIMEZONE_OFFSET = -13; public static DateTime BeijingTimeToAMESTime(DateTime beijingTime) { int offsetHours = (IsNowAMESDayLightSavingTime ? TIMEZONE_OFFSET_DAY_SAVING_LIGHT:TIMEZONE_OFFSET); return beijingTime.AddHours(offsetHours); } public static DateTime AMESNow { get { return BeijingTimeToAMESTime(DateTime.Now); } } /// <summary> /// 判断当前日期是否是美国夏令时 /// 从2007年开始每年3月的第二个星期日开始夏令时,结束日期为11月的第一个星期日。 /// </summary> /// <returns>是,返回true,否则为false</returns> public static bool IsNowAMESDayLightSavingTime { get { return DateTime.UtcNow > DayLightSavingStartTimeUtc && DateTime.UtcNow < DayLightSavingEndTimeUtc; } } /// <summary> /// 夏令时开始时间 /// </summary> static DateTime DayLightSavingStartTimeUtc { get { if (_thisYearDaylightSavingTimeStart.Year != DateTime.Now.Year) { DateTime temp = new DateTime(DateTime.Now.Year,3,8,0,0,0); while (temp.DayOfWeek != DayOfWeek.Sunday) { temp = temp.AddDays(1); } _thisYearDaylightSavingTimeStart = temp.AddHours(TIMEZONE_OFFSET); } return _thisYearDaylightSavingTimeStart; } } /// <summary> /// 夏令时结束时间 /// </summary> static DateTime DayLightSavingEndTimeUtc { get { if (_thisYearDaylightSavingTimeEnd.Year != DateTime.Now.Year) { DateTime temp = new DateTime(DateTime.Now.Year,11,1,0,0,0); while (temp.DayOfWeek != DayOfWeek.Sunday) { temp = temp.AddDays(1); } _thisYearDaylightSavingTimeEnd = temp.AddHours(TIMEZONE_OFFSET_DAY_SAVING_LIGHT); } return _thisYearDaylightSavingTimeEnd; } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架