3

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

我能够确定用户的时区的唯一方法是通过 Javascript,它只给出一个时区偏移量。Zend_Date 似乎只采用 'America/New_York' 格式的时区。

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

谢谢!

4

3 回答 3

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

这应该让你到达你需要去的地方。如果您遇到困难,请发布代码示例。

于 2010-05-15T05:43:00.190 回答
1

您可以使用 timezone_name_from_abbr 函数:

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

您还需要考虑 DST。查看此示例以获取更多信息。

于 2010-05-15T16:59:53.320 回答
0

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

然后在php中你可以有一个由偏移量索引的数组

$timezones = array (

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

$date->setTimezone( $timezones[$_COOKIE['tz_offset']] );
于 2010-05-08T05:22:44.007 回答