如何使用Zend_Date简单地更改时区偏移?

时间:2010-05-08 02:09:11

标签: php javascript zend-framework timezone zend-date

我正在使用Zend_Date管理日程安排应用中的日期/时间。

我能够确定用户时区的唯一方法是通过Javascript,它只提供时区偏移量。 Zend_Date似乎只采用了“America / New_York”格式的时区。

有没有办法以这种格式获取用户时区或使用Zend_Date设置时区偏移量?

谢谢!

3 个答案:

答案 0 :(得分:2)

尼基,

你真的不需要Zend_Date,因为PHP内部DateTime和DateTimeZone对象适用于此;但是,如果你真的需要使用Zend_Date,我可以指出你正确的方向。

参见以下示例

  1. $ date = new Zend_Date(1234567890,false,$ locale);
  2. $ date-> toString ...(有关详细信息,请参阅:http://framework.zend.com/manual/en/zend.date.constants.html
  3. 对ISO 8601使用以下常量: (Z =时区差异[+0100])
  4. 这可以让你到达你需要的地方。如果您遇到问题,请发布代码示例。

答案 1 :(得分:1)

您可以使用timezone_name_from_abbr函数:

$javascript_offset = '-1';
$zone = timezone_name_from_abbr('', $javascript_offset * 3600, 0);

您还需要考虑DST。有关详细信息,请查看this example

答案 2 :(得分:0)

您可以使用javascript将Cookie设置为用户时区偏移量。

然后在php中你可以得到一个由offset

索引的数组
$timezones = array (

    '-1' => 'adfas/adsfafsd',
    '-2' => 'adsfasdf/asdfasdf'
    ...
);

$date->setTimezone( $timezones[$_COOKIE['tz_offset']] );