2011-01-01 12 views
1

php date()が私に間違った時間を与えている理由を理解しようとしています。実際の時刻を2時間前に設定しています。PHP date()関数が正しい時刻を与えない

<?php echo date("Y-m-d H:i:s"); ?> 

2011-01-01 05:14:04の代わりに2011-01-01 03:14:04が表示されます。時間は2だけ減少します。 私はdate()のタイムゾーンを変更していないので、ユーザーがサイトを訪れたときにタイムゾーンも正しい時刻が欲しいです。どのように私はこれをPHPを使用して動作させることができますか? date_default_timezone_setまたはini

Update経由:あなたはあなたのユーザーのための正しい日付を設定することはできません

+0

のコード

date_default_timezone_set("Asia/Bangkok");//set you countary name from below timezone list echo $date = date("Y-m-d H:i:s", time());//now it will show "Asia/Bangkok" or your date time 

一覧を以下にお住まいの地域のために変更することができGMT時間を表示するので、それがありますサーバーはどこに実行されていますか? 'echo date_default_timezone_get();'は何を返しますか? –

+1

[JavaScriptまたはPHPを使用してユーザーの現在のローカル時刻を自動的に検出]の重複可能性(http://stackoverflow.com/questions/863474/automatically-detect-users-current-local-time-with-javascript-or-php) –

答えて

1

は、タイムゾーンを設定してみてください。 Javascriptはそれを処理できますが、ユーザのシステムを利用して時間を判断する必要があります。

2

date_default_timezone_set()またはdatetimeオブジェクトのいずれかを使用する必要があり、ユーザはオプションメニューで独自のタイムゾーンを設定する必要があります。

それ以外の場合、PHPはサーバー側の言語であり、ユーザーが何時になっているかはわかりません。

クライアント側のJavaScriptを使用する必要があります。静的にして現在のユーザシステムの時間を表示することもできますし、何らかの理由でPHPに時間を費やす必要がある場合は、AJAXのようなスクリプトを使用して、ページが読み込まれたときにJavaScriptがスクリプトに時間を送るようにできます。

0

//変更日付形式

$dateInfo = date_parse_from_format('m-d-Y', $data['post_date']); 
$unixTimestamp = mktime(
     $dateInfo['hour'], $dateInfo['minute'], $dateInfo['second'], 
     $dateInfo['month'], $dateInfo['day'], $dateInfo['year'] 
    ); 
$data['post_date']=date('Y-m-d',$unixTimestamp); 
関連する問題