我正在使用 Zend_Date 来管理日程安排应用程序中的日期/时间。
我能够确定用户的时区的唯一方法是通过 Javascript,它只给出一个时区偏移量。Zend_Date 似乎只采用 'America/New_York' 格式的时区。
有没有办法以这种格式获取用户时区或使用 Zend_Date 设置时区偏移量?
谢谢!
我正在使用 Zend_Date 来管理日程安排应用程序中的日期/时间。
我能够确定用户的时区的唯一方法是通过 Javascript,它只给出一个时区偏移量。Zend_Date 似乎只采用 'America/New_York' 格式的时区。
有没有办法以这种格式获取用户时区或使用 Zend_Date 设置时区偏移量?
谢谢!
尼基,
您实际上并不需要 Zend_Date,因为 PHP 固有的 DateTime 和 DateTimeZone 对象对此很有效;但是,如果您确实需要使用 Zend_Date,我可以为您指明正确的方向。
请参阅以下示例
这应该让你到达你需要去的地方。如果您遇到困难,请发布代码示例。
您可以使用 timezone_name_from_abbr 函数:
$javascript_offset = '-1';
$zone = timezone_name_from_abbr('', $javascript_offset * 3600, 0);
您还需要考虑 DST。查看此示例以获取更多信息。
您可以使用 javascript 将 cookie 设置为用户时区偏移量。
然后在php中你可以有一个由偏移量索引的数组
$timezones = array (
'-1' => 'adfas/adsfafsd',
'-2' => 'adsfasdf/asdfasdf'
...
);
$date->setTimezone( $timezones[$_COOKIE['tz_offset']] );