【发布时间】:2011-08-04 15:38:18
【问题描述】:
在 Symfony 应用程序中...
-
存储用户时区信息的最佳方式是什么?
- 它是通过文化发现的吗?
- 应该存储哪些标准密钥?使用 PHP 时区并存储为文本?
-
如何在表示层格式化服务器日期时间?
- 是否有 PHP/Symfony 助手可以做到这一点?
【问题讨论】:
标签: datetime symfony1 internationalization timezone
在 Symfony 应用程序中...
存储用户时区信息的最佳方式是什么?
如何在表示层格式化服务器日期时间?
【问题讨论】:
标签: datetime symfony1 internationalization timezone
关于你的第一个问题。
我不认为用户的时区被存储,但你当然可以。
但是您应该检查settings.yml 中.settings 下的default_timezone 设置。
对于格式化日期,您可以使用 Date 助手。它又使用sfDateFormat 类,该类由当前用户culture 初始化。
您还可以使用它来显示给定日期的时区。
【讨论】:
我使用以下策略:
sfWidgetFormI18nChoiceTimezone)utcToLocal_date,它使用了Date 助手的format_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;
}
【讨论】: