源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解析美国东部时间与北京时间相互转换的实现代码

  • 时间:2022-03-09 11:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解析美国东部时间与北京时间相互转换的实现代码
美国东部时间在UTC-5时区,北京时间是UTC+8时区,正常情况下美东时间比北京时间晚13个小时。需要注意的是美国有夏令时,而北京没有夏令时,美国夏令时时会让时间快一个小时,让人民早起早睡,所以在美国实行夏令时时美东时间比北京时间晚12个小时。 逻辑如上所述,代码如下
[u]复制代码[/u] 代码如下:
/// <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;         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部