在周日获得周数的问题

时间:2010-03-24 07:04:51

标签: zend-framework

我想使用Zend_Date

获取特定日期的周数

我的本​​地在Opera浏览器中设置为英语(IN)[en_IN]

我正在使用以下代码

$date = new Zend_Date('22 Mar, 2010', null, Zend_Registry::get('Zend_Locale'));
echo $date->get(Zend_Date::WEEK); //output 12, correct

但如果我们给一个星期天,它将无法正常工作

例如

$date = new Zend_Date('21 Mar, 2010', null, Zend_Registry::get('Zend_Locale'));
echo $date->get(Zend_Date::WEEK); //output 11,  not correct

它应输出12

这有什么问题?

2 个答案:

答案 0 :(得分:1)

对于英语(印度)语言环境'en_IN',一周的第一天是星期一。 Zend_Date正在为您提供正确的价值。

编辑:我刚刚使用'en_US'语言环境进行了快速测试,我得到了同样的行为。看起来Zend_Date可能忽略了此计算的区域设置。

$locale = new Zend_Locale('en_US');
Zend_Registry::set('Zend_Locale', $locale);

$date = new Zend_Date('2010-03-22', null, Zend_Registry::get('Zend_Locale'));
echo $date->get(Zend_Date::WEEK); //outputs 12, correct
$date = new Zend_Date('2010-03-21', null, Zend_Registry::get('Zend_Locale'));
echo $date->get(Zend_Date::WEEK); //outputs 11, not correct

答案 1 :(得分:0)

这应该可以正常工作:

$locale = new Zend_Locale('en_IN');
Zend_Registry::set('Zend_Locale', $locale);

$date = new Zend_Date('22 Mar, 2010', null, Zend_Registry::get('Zend_Locale'));
echo $date->get(Zend_Date::WEEK); 

如果没有,请尝试使用Zend_Locale_Data直接确定。有时,Unicode提供的数据并不完全符合我们对本地区的预期。