900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 美东时间php 解析美国东部时间与北京时间相互转换的实现代码

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

时间:2021-02-23 16:51:57

相关推荐

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

美国东部时间在UTC-5时区,北京时间是UTC+8时区,正常情况下美东时间比北京时间晚13个小时。需要注意的是美国有夏令时,而北京没有夏令时,美国夏令时时会让时间快一个小时,让人民早起早睡,所以在美国实行夏令时时美东时间比北京时间晚12个小时。

逻辑如上所述,代码如下

复制代码 代码如下:

///

/// AMESTime 的摘要说明:

/// 美东时间的转换

///

/// 美东时间在UTC-5时区,美国有夏时制,即在夏令时启用之后美东时间比起所在时区早一个小时,即UTC-4

/// 在未使用夏令时时美东时间比北京时间(UTC+8时区)晚13个小时,在启用夏令时时美东时间比北京时间晚12个小时

///

///

/// 美国国会通过的能源法案,夏令时时段:从开始每年3月的第二个星期日开始夏令时,结束日期为11月的第一个星期日。

///

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);

}

}

///

/// 判断当前日期是否是美国夏令时

/// 从开始每年3月的第二个星期日开始夏令时,结束日期为11月的第一个星期日。

///

/// 是,返回true,否则为false

public static bool IsNowAMESDayLightSavingTime

{

get

{

return DateTime.UtcNow > DayLightSavingStartTimeUtc

&& DateTime.UtcNow < DayLightSavingEndTimeUtc;

}

}

///

/// 夏令时开始时间

///

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;

}

}

///

/// 夏令时结束时间

///

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;

}

}

}

时间: -05-18

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。