私は、他の国を対象とした Web アプリケーションを開発中です。
さて、私の考えを説明するために、私は次のようなことを考えていました:
// Illustrates the current time on my server
$time = new DateTime();
echo $time->format("Y-m-d H:i:s P");
// Illustrates the current time for the time the user told my app he is in
$time = new DateTime(null, new DateTimeZone('Europe/London'));
echo $time->format("Y-m-d H:i:s P");
これの出力は次のとおりです。
2012-11-30 11:02:40 +01:00 // My server time
2012-11-30 10:02:40 +00:00 // The users time
ユーザーに現在の時刻を表示できるようになったので、すべて問題ありません。しかし、私が必要としているのは、ユーザー入力を取得してサーバー時間に変換することです-または、少なくともこれが正しい方法だと思います.
ユースケース
ロンドンの User が、 でアクションを実行する必要があることをアプリケーションに伝えます2012-12-01 19:00:00
。データベースでこのタイムスタンプを更新することにより、cronjob は指定された時間にこのアクションを実行します。しかし、私のユーザーはこれを2012-12-01 18:00:00
代わりに起こっているように経験します。
これを解決する方法を考えている間、私はいくつかのオフセット時間を使って作業していました。これにより、多くのスパゲッティ コードと、データベースの台無しなテーブル デザインが発生しました。
意味をなすようにこれをどのようにやってのけるのですか?