2010-03-24 48 views
0

我希望得到一個特定日期的週數,使用Zend_Date的運算問題在獲得週日的週數,在Zend的

我的地方是設置好的英語(IN)en_IN],Opera瀏覽器

我使用下面的代碼

$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

有什麼不對呢?

+0

如果錯誤跟蹤器工作不正常,您應該將其作爲錯誤跟蹤器上的錯誤提交。 – 2010-03-24 10:05:40

+0

如果21:st是星期天,22:nd是星期一=新的星期,至少按瑞典標準。星期天開始英語周嗎? – chelmertz 2010-03-24 17:47:32

+0

在美國,星期日是本週的第一天。我不知道其他地區遵守該規則。 – Sonny 2010-03-24 18:05:46

回答

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提供的數據並不完全如我們對該地區的預期。

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 
+0

我也認爲Zend_Date可能會忽略此計算的區域設置。 – 2010-03-26 05:41:51

相關問題