2016-08-11 120 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

我记得,我已经在服务器上设置的时区设置,所以我不知道他们为什么不沾,但这解决了我的问题。