私のシステムでは、データベースのタイムスタンプはUTC値として記録されます。
すべてのユーザーのプロファイルにタイムゾーンが記録されています。ログインすると、タイムゾーン値がプロファイルからセッションに転送されます($ session-> set('timezone'、$ tz);)。
私のコードのほとんどはSonataINTLバンドルを使用しているため、フォームフィールドを除いて、ユーザーは自分のタイムゾーンに対して正しく表示された日時の値を確認できます。
私は最近、いくつかのSymfony2タイプのmodel_timezoneフィールドとview_timezoneフィールドを発見しました。フィールドに正しい値を表示させることはできますが(以下のコードスニペットに示されているように)、ユーザーセッションからview_timezoneを設定する方法を理解したいですか?(私は何らかの方法で$ optionsを渡すことができると思いますか?)
イベントコントローラースニペット:
$object = <object loaded>;
$form = $this->createForm(new MyEventType(), $object);
MyEventTypeフォームスニペット:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('id', null, array(
'label' => 'Event ID',
));
$builder->add('changed', 'datetime', array(
'date_widget' => 'single_text',
'date_format' => \IntlDateFormatter::SHORT,
'time_widget' => 'single_text',
'model_timezone' => 'UTC',
'view_timezone' => 'Pacific/Auckland',
));