2012-02-23 4 views
0

私はPHPで動作しているシステムを持っていて、CodeIgniterを使用しています(CI固有の回答がある場合はうれしいでしょう)。strtotimeを使用してタイムゾーンを考慮する

「この木曜日」や「今週の月曜日」などの日付のタイムスタンプを把握する必要があることがよくあります。私は現在strtotime("this Thursday")を使用しています。

私はESTにサーバーを持っています。ニューヨークで2012年2月24日の金曜日の午前01:00(午前1:00)です。

タイムゾーンを太平洋標準時に指定したユーザーがいます。今はサンフランシスコで2012年2月23日22:00(午後10時)遅く木曜日です。

私はstrtotime("this Thursday")を使用します。私のサーバーはESTになっているので、2012年3月1日のタイムスタンプが返されます。ユーザーのタイムゾーンを考慮したいと思います。

strtotime("this Thursday")を使用できますか?その場合は、ターゲットタイムゾーンをどのように指定できますか?

もしそうでなければ、特定のタイムゾーンで「今週の木曜日」の日付を取得するにはどのような方法をお勧めしますか?

+0

あなたのサーバーの日付は将来です! – jon

+0

絶対に!私は人為的な例を使用していました。まもなく、それは過去になるでしょう。 –

+0

ああ、申し訳ありません。 – jon

答えて

1

から文字列を取っています。 $ nowパラメータをユーザのタイムゾーンの現在の時刻に指定すると、strtotimeは必要なものを返します。

+0

これは、夏時間の違い(同じ日付ではない)などのために、/ほとんど/ 99%+のいくつかのケースでは機能しますが、タイムゾーンを変更する方が良いでしょう。時間を変更すると少し矛盾があります間違ったタイムゾーンを維持する。まれに、使用に応じて決してそれらにぶつかることはないかもしれませんが、そこにはあります。 – Wrikken

+0

私の時間varにタイムゾーンが入っているようです。 「T」コンポーネントをプリントアウトすると、正しいユーザーのタイムゾーンが表示されます。 –

+0

あなたは本当ですか?それはあなたが '$ now'の入力がちょうど謙虚で単純な整数であるので、あなたが_somewhere_を設定したように聞こえるからです。 – Wrikken

0

これは、私はちょうどのstrtotimeは$今パラメータを取ることを考え出しPHPのサイト

<?php 
date_default_timezone_set('Asia/Shanghai'); 

$first_day_of_month = date('Y-m',time()) . '-01 00:00:01'; 
$t = strtotime($first_day_of_month); 
print_r(array(
      date('Y-m',$t), 
      date('Y-m',strtotime('- 1 month',$t)), 
      date('Y-m',strtotime('- 2 month',$t)), 
)); 
?> 
関連する問題