【发布时间】:2012-03-25 06:49:20
【问题描述】:
我查看了关于 SO 的其他解决方案,但似乎没有一个解决以下方面的时区/夏令时问题。
我正在调用NOAA Tide Prediction API 和NOAA National Weather Service API,这需要传递时间范围来检索数据。对于我数据库中的每个位置,我将时区作为 UTC 偏移量以及是否观察到夏令时(1 或 0)。我正在尝试将一些日期(今天和明天)格式化为 LST(本地标准时间)在它自己的时区中的格式,以便我可以传递给这些 API。
我不知道如何知道某个日期(例如今天)是否在夏令时范围内。
这是我目前所拥有的:
// Get name of timezone for tide station
// NOTE: $locationdata->timezone is something like "-5"
$tz_name = timezone_name_from_abbr("", $locationdata->timezone * 3600, false);
$dtz = new DateTimeZone($tz_name);
// Create time range
$start_time = new DateTime('', $dtz);
$end_time = new DateTime('', $dtz);
$end_time = $end_time->modify('+1 day');
// Modify time to match local timezone
$start_time->setTimezone($dtz);
$end_time->setTimezone($dtz);
// Adjust for daylight savings time
if( $locationdata->dst == '1' )
{
// DST is observed in this area.
// ** HOW DO I KNOW IF TODAY IS CURRENTLY DST OR NOT? **
}
// Make call to API using modified time range
...
我该怎么做呢?谢谢。
【问题讨论】: