在Symfony应用程序中......
存储用户时区信息的最佳方式是什么?
如何在表示层上格式化服务器日期时间?
答案 0 :(得分:3)
我使用以下策略:
sfWidgetFormI18nChoiceTimezone
)utcToLocal_date
,它使用format_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;
}
答案 1 :(得分:0)
关于你的第一个问题。
我不认为存储用户的时区,但当然可以。
但是,您应该检查default_timezone
中.settings
下的settings.yml
设置。
对于格式化日期,您可以使用Date
帮助程序。然后使用sfDateFormat
类,该类使用当前用户 culture 进行初始化。
您也可以使用它来显示给定日期的时区。