2016-08-11 3 views
0

Ich habe einige Schwierigkeiten zu verstehen, was los ist mit diesem Problem, das ich habe. Ich habe einen Web-Server mit CentOS erstellt, ich habe ein HTML-Formular, das ich auf dem Server erstellt habe. Das Problem ist, dass, wenn ich Informationen in das Formular eingib, wenn ich auf die modifizierte Zeit schaue, es eine UTC-Zeit anstatt einer EST-Zeit zeigt. Der Grund, dass dies ein Problem ist, ist, weil die Art, wie ich die Datei gespeichert habe, wie das Datum verwendet. Also, wenn die Zeit sagt, dass es 12:01 Uhr ist, aber die Information um 20:01 Uhr eingegeben wurde, anstatt die Datei zu überschreiben, wird eine neue Datei mit dem Datum von morgen darauf erstellt. Ich habe die Zeitzone auf EST in meinem PHP-Code eingestellt, aber es scheint nicht meine Zeitzone zu akzeptieren.Datum geändert Zeit zeigt UTC Zeitzone

das ist der PHP-Code, den ich habe.

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!!!"; 

ist dies der richtige Weg, um die Zeitzone einzustellen, oder mache ich das völlig falsch?

Vielen Dank für Ihre Hilfe im Voraus.

Antwort

0

Try "Amerika/New_York":

date_default_timezone_set('America/New_York'); 

Siehe die Liste der Zeitzonen hier: http://php.net/manual/en/timezones.america.php

+0

Ich habe gerade versucht, und ich bekomme immer noch die gleichen Ergebnisse. Die Zeit wird immer noch als UTC angezeigt. –

+0

"Die Zeit" ist was genau? Es gibt hier keinen Code, der kein Datum von "m-d-y" ist, das für die meiste Zeit des Tages dasselbe ist, egal ob du in NYC oder London bist ... beziehen wir uns auf die Serverzeit an der Eingabeaufforderung? Aufrufe an die Datenbank? Vielleicht möchtest du die Zeitzone in php.ini einstellen? –

+0

Die Zeit, die ich beziehe, ist die Modifikationszeit. Wenn ich auf die IP des Servers gehe, wo das Programm ist, schaue ich in das Verzeichnis und schaue auf das Datum ändern, es zeigt das aktuelle Datum, aber die Zeit wird 5 Stunden voraus sein. Zum Beispiel, wenn ich ein neues Element hinzufüge, führe mein Skript aus und es überschreibt die Datei, wenn sie dort ist, und hängt die neue Information an. Wenn ich zurück in das Verzeichnis schaue, wird es geändert 8/11/2016 10:18:13 Uhr angezeigt. Die Zeit, die angezeigt wird, als die Datei geändert wurde, ist die Zeit, auf die ich mich beziehe. Ich weiß nicht, ob es eine Servereinstellung ist, die ich ändern muss oder was. –

0

fand ich die Antwort auf das Problem aus. Obwohl ich die Zeitzone in meiner Datei festlegte, musste ich die Zeit auf dem Server selbst neu konfigurieren. Ich loggte in den Server und lief diese einfache Codezeile:

date MMDDhhmmYYYY

Ich erinnere mich, dass ich bereits die Zeitzone-Einstellungen auf dem Server festgelegt hatte, so dass ich bin mir nicht sicher, warum sie nicht halten, aber das hat löste mein Problem.

Verwandte Themen