2012-03-21 16 views
1

時間に関してはすでにかなりの数の質問がありますが、私はまだ私の質問に答えることができません。だから、もしこれが繰り返しであるなら、私は謝罪しなければならない。私の質問は次のとおりです。JavaScript Dateオブジェクトは入力日時をUTC時刻または現地時刻として認識しますか?

postDateという名前のMySQLテーブルの列がdatetimeの形式です。私のサーバーはシステム時刻(UTC)です。私は、次のPHPスクリプトを持っている:彼は警告に何が表示されます、私はちょうど$postDate2012-03-30 01:00:00であると仮定すると、知りたい

<script type='text/javascript'> 
var expiry = new Date('$postDate'); 
alert(expiry); 
</script> 

$postDate = date("r", strtotime($postDate)); // sorry forgot to add this line 

、およびクライアントが+ 8hrタイムゾーンにいるのですか?私。 JavaScript Dateオブジェクトは、UTC時間または現地時間としてdatestringを認識しますか?

+0

なぜあなたはそれを試してみませんか?コンピュータのクロック設定を変更し、スクリプトを実行します。または、ハードコーディングされた文字列で実行してみてください。 –

答えて

2

ユーザーのロケールによっては、「無効な日付」の結果で失敗します。

代わりに、タイムスタンプを渡す必要があります。タイムスタンプは常にUTCで表示されます。 datetime形式からタイムスタンプを取得するには、strtotime()まで実行してください。しかし、JSは秒単位ではなくミリ秒単位でタイムスタンプを行いますので、最後に000を追加する必要があります。

だから基本的には:

$postDate = strtotime($postDate)."000"; 

警告の結果はまだ、ユーザーのタイムゾーンに依存しますが、それは正しく、あなたが与えたUTCタイムスタンプからオフセットされます。たとえば、タイムスタンプが1AM UTCで、ユーザーがUTC + 8の場合、9AMが表示されます。

+0

ありがとうございました。私は 'datestring'がタイムスタンプでなければならないことを知らなかった。 –

+0

ロケールの設定に依存しないため、 "持っている"ことはありませんが、簡単になります。 –

1

enter image description hereとはい、it does work、素晴らしいです。フィドルでコードの2行だけ。

+0

アラートに「無効な日付」が表示されます。それは動作しません。 –

+0

@Kolinkそれは私のブラウザでうまく警告します。更新された答えの画像を参照してください。 – Joseph

+0

私は答えのフォーマットの問題に対処しました - ただ1つのロケールで1人の人にしか働かないからです。 –

関連する問題