大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
美国东部时间在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; } } }
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/166999.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...