2012-04-17 23 views
1

私のサイト全体を変更しません。ユーザーが選択したタイムゾーンは、サイトに存在するカウントダウンに影響します。カウントダウンは次のようになります。これ以上日時がある一時的な

$today_date = new DateTime('now'); // now 
    $final_date = new DateTime($date); // a date in the future 
    $interval = $today_date->diff($final_date); // find the difference 

    $time_left = $interval->format('starting in %d days, %h hours and %i minutes'); // display it 

、私は次のようでした:

正しく動作しません
 $userGMT = $user->get_gmt(); 
     date_default_timezone_set($userGMT); 

。それはまだ私が選んだのではなく、ヨーロッパ/ロンドンのタイムゾーンでカウントダウンします。

エコー日付( 'H:i:s')を試しました。上記のことが影響を受け、私が選んだタイムゾーンの時間を表示している時間までに見ることができます。

これは動作しますが、dateTime( 'now'); doesnt?

+0

'新しいDateTimeの( '今'、新しいDateTimeZoneを( 'ヨーロッパ/ロンドン'))'? –

+0

はい、うまくいきませんでした – Karem

+0

可能なすべてのエラーをキャッチするために 'error_reporting(E_ALL)'と 'ini_set( 'display_errors'、 '1')'を有効にしましたか?すべてのタイムゾーンが正しくインストールされていますか?あなたのコンソールで 'locale -a'で確認してください。 –

答えて

0

何をしたいのですか?をあなたのcurrentTimeに追加して、サーバー時間を差し引きます。時間を秒単位で取得してから追加してください。$userGMT*60*60 - $yourTimeZone*60*60

0

将来の日付が生成される場合は、該当するタイムゾーンについて明示する必要があります。これは、間隔は、ホストのタイムゾーンとは無関係であることを示しています

<?php 
$date = '2012-04-19'; // date in the future 
$user_tz = new DateTimeZone('Asia/Dubai'); 
foreach (array('Europe/London', 'America/Los_Angeles') as $tzname) 
{ 
    date_default_timezone_set($tzname); 
    $today_date = new DateTime('now'); // now 
    $final_date = new DateTime($date, $user_tz); // future date with explicit tz 
    $interval = $today_date->diff($final_date); // find the difference 
    $time_left = $interval->format('start in %d days, %h hours and %i minutes'); 
    echo "$tzname: $time_left\n"; 
} 

出力:あなたがしようとしました

Europe/London: start in 0 days, 11 hours and 53 minutes 
America/Los_Angeles: start in 0 days, 11 hours and 53 minutes 
+0

だから、私は何をしたいのですか? – Karem

+0

@Karem:まったくありません。私が提案した修正は、ホストのタイムゾーンの影響を受けません。 – wallyk

+0

あなたの出力では、ヨーロッパ/ロンドンとアメリカ/ los_angelesの両方で同じ時間数/分を出力しますが、これは正しくありません。 GMT-8のAmerica/Los_angelesがあなたの例で3時間左と53分に表示されるはずです – Karem

関連する問題