2016-08-11 9 views
0

私はこの問題に何が起こっているのかを理解するのが難しいです。私はcentOSを使用してWebサーバーを作成しました。私はサーバー上に作成したHTMLフォームを持っています。問題は、フォームに情報を入力するときに、変更した時刻を見ると、EST時刻ではなくUTC時刻が表示されていることです。これが問題である理由は、ファイルを保存する方法が日付を使用しているためです。だから、午前12時01分だと言っているのに、午後8時01分に情報が入力された場合は、ファイルを上書きするのではなく、明日の日付を付けて新しいファイルを作成します。私は私のPHPコードでESTにタイムゾーンを設定しているが、それは私のタイムゾーンを受け入れていないようです。更新日時はUTCタイムゾーンを示しています

これは私が持っているPHPコードです。

if(isset($_POST['mydrivers'])) 
{ 
    date_default_timezone_set('EST'); 
    $month = date('M'); 
    $fp = file('Reports/Shortage/' .$month. '/Shortage'.date('m-d-y'). ".csv"); 
    //$fi = fopen('driver'.date('m-d-y'). ".csv", "a"); 
    $header=array("Date", "Driver", "Customer #", "Invoice #", "Product Description", "Size", "CS", "Btls", "CHK Itls"); 
    $driver = $_POST['drivers']; 
    $dates = $_POST['dates']; 
    $custnum = $_POST['customernum']; 
    $invnum = $_POST['invoicenum']; 
    $proddesc = $_POST['proddes']; 
    $sz = $_POST['size']; 
    $case = $_POST['cs']; 
    $bottle = $_POST['btls']; 
    $chkit = $_POST['chkitls']; 
    $result = ''; 
    $search = "Driver"; 
    $line_number = false; 


    while(list($key, $line) = each($fp) and !$line_number) 
    { 
     $line_number = (strpos($line, $search) !== FALSE); 
    } 

    if($line_number) 
    { 
     $result .= 
         $dates. " ,". $driver. " ,". $custnum. ", ". $invnum. ", ". $proddesc. ", ". $sz. " ,". $case. ", ". $bottle. ", ". $chkit. "\r\n"; 
    } 
    else 
    { 
     $result .= implode(",",$header). "\r\n". 
         $dates. " ,". $driver. ", ". $custnum. " ,". $invnum. ", ". $proddesc. ", ". $sz. ", ". $case. " ,". $bottle. ", ". $chkit. "\r\n"; 
    } 

    /*foreach ($fp as $file) 
    { 
     if(substr($file,0,8) != 'header 1') 
     { 
      $result .= implode(",",$header). "\r\n". 
         $driver. " ". $dates. " ". $custnum. " ". $invnum. " ". $proddesc. " ". $sz. " ". $case. " ". $bottle. " ". $chkit. "\r\n"; 
     } 
     else 
     { 
      $result .= 
        $driver. " ". $dates. " ". $custnum. " ". $invnum. " ". $proddesc. " ". $sz. " ". $case. " ". $bottle. " ". $chkit. "\r\n"; 
     } 

    }*/ 

    if(!is_dir('Reports/Shortage/'.$month)) 
    { 
     mkdir('Reports/Shortage/'.$month, 0777, true); 
    } 
    file_put_contents('Reports/Shortage/'.$month. '/Shortage'.date('m-d-y').".csv", $result, FILE_APPEND); 
    //myfputcsv($fp, $result); 
    echo "data added!!!"; 

これはタイムゾーンを設定する正しい方法ですか、これを完全に間違っているのですか?事前にあなたの助けのための

感謝。

答えて

0

「アメリカ/ニューヨーク」を試してみてください。

date_default_timezone_set('America/New_York'); 

は、ここではタイムゾーンのリストを参照してください。http://php.net/manual/en/timezones.america.php

+0

私はそれを試しましたが、私はまだ同じ結果を得ています。時刻はまだUTCとして表示されています。 –

+0

「時間」は何ですか?ここにコードはありません。これは "m-d-y"の日付ではありません。あなたはNYCかロンドンのどちらにいても、ほとんど同じ日になるでしょう...コマンドプロンプトでサーバー時間を参照していますか?データベースへの呼び出し?おそらく、あなたはphp.iniでタイムゾーンを設定したいと思っていますか? –

+0

私が参照している時間は修正時間です。私はプログラムの場所のサーバーのIPに行くとき、私はディレクトリを見て、日付の変更を見て、それは現在の日付を示していますが、時間は5時間先になります。たとえば、新しい項目を追加してスクリプトを実行し、ファイルがあればそのファイルを上書きして新しい情報を追加します。私がディレクトリを振り返ると、それは変更された8/11/2016 10:18:13 pmと表示されます。ファイルが変更されたときに表示される時間は、私が参照している時間です。私はそれが変更する必要があるサーバーの設定かどうかわからない。 –

0

私は、問題への答えを見つけました。私のファイルにタイムゾーンを設定していたにもかかわらず、実際にはサーバー自体の時刻を再設定する必要がありました。私はすでにサーバー上のタイムゾーンの設定を設定していたことを覚えているので、私は彼らが固執しなかった理由を確認していないが、これは持っている

date MMDDhhmmYYYY

:私は、サーバーにログインし、コードのこのシンプルなラインを走りました私の問題を解決しました。

関連する問題