0
在Symfony的應用...Symfony /策略:基於時區格式化日期時間?
什麼是存儲用戶的時區信息的最佳方式?
- 它是通過文化發現的嗎?
- 應存儲哪些標準密鑰?使用PHP時區和商店作爲文本?
如何格式化表示層上的服務器日期時間?
- 是否有PHP/Symfony幫手來做到這一點?
在Symfony的應用...Symfony /策略:基於時區格式化日期時間?
什麼是存儲用戶的時區信息的最佳方式?
如何格式化表示層上的服務器日期時間?
關於你的第一個問題。 我不認爲用戶的時區是存儲的,但當然可以。 但是,您應該檢查settings.yml
中的.settings
下的default_timezone
設置。
對於格式化日期,您可以使用Date
幫助程序。後者依次使用sfDateFormat
類,該類使用當前用戶文化進行初始化。 您也可以使用它來顯示給定日期的時區。
我用下面的策略:
sfWidgetFormI18nChoiceTimezone
)utcToLocal_date
其中使用功能的Date
幫手:。
function utcToLocal_date($originedatetime, $format = 'g')
{
if (class_exists('sfContext', false) && sfContext::hasInstance() && sfConfig::get('sf_i18n'))
{
$timezone = sfContext::getInstance()->getUser()->getProfile()->getTimezone();
if (!empty($timezone) && ($newtimezone = new DateTimeZone($timezone)))
{
$datetime = new DateTime($originedatetime);
$datetime->setTimezone($newtimezone);
$originedatetime = $datetime->format("Y-m-d H:i:s");
}
}
if (function_exists('format_date'))
{
return format_date($originedatetime, $format);
}
return $originedatetime;
}
謝謝Grad。但是,如果我想存儲時區,首選的數據類型是什麼,我應該使用什麼作爲主數據? sfDateFormat需要時區作爲輸入的任何代碼片段? – Prasad 2011-04-14 03:42:01
首選數據類型取決於你想如何顯示給你的用戶。當然,偏移量足以進行計算,但如果要將其呈現給用戶,字符串會更好。 我認爲沒有辦法用sfDateFormat構造函數提供時區。我認爲你將不得不創建自己的Helper(/ class)來實現這一點,除了將UTC時間翻譯成用戶時區中的某個時間(然後將它傳遞給DateHelper函數?至少,我就是這麼做的。 – 2011-04-14 08:35:55