2016-08-11 157 views
0

我在理解發生這個問題時遇到了一些困難。我創建了一個使用centOS的web服務器,我有一個我在服務器上創建的html表單。問題是,當我在窗體中輸入信息時,當我查看修改時間時,它顯示的是UTC時間而不是EST時間。這是一個問題的原因是因爲我的文件被保存爲使用日期的方式。所以如果時間在說這是上午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」,無論你在紐約還是倫敦,一天的大部分時間都是一樣的......我們是指命令提示符下的服務器時間嗎?調用數據庫?也許你想在php.ini中設置時區? –

+0

我指的是修改時間。當我去到程序所在服務器的IP時,我查看目錄並查看日期修改,它顯示當前日期,但時間將提前5小時。例如,我添加了一個新項目,運行我的腳本,它會覆蓋文件,如果它存在並追加新信息。當我回頭看目錄時,它會顯示已更改8/11/2016 10:18:13 pm。文件改變時顯示的時間就是我所指的時間。我不知道它是否是我需要改變或者什麼的服務器設置。 –

0

我找到了解決問題的辦法。儘管我在我的文件中設置了時區,但實際上我必須重新配置服務器本身的時間。我登錄到服務器並運行的代碼,這個簡單的行:

date MMDDhhmmYYYY

我記得,我已經在服務器上設置的時區設置,所以我不知道他們爲什麼不沾,但這解決了我的問題。