日期修改时间显示UTC时区


Date modified time is showing UTC timezone

我很难理解我所遇到的这个问题是怎么回事。我使用centOS创建了一个web服务器,我有一个html表单,我已经在服务器上创建。问题是,当我在表单中输入信息时,当我查看修改后的时间时,它显示的是UTC时间而不是EST时间。这是一个问题的原因是因为我将文件保存为使用日期的方式。因此,如果时间显示是上午12:01,但信息是在晚上8:01输入的,那么不是覆盖文件,而是创建一个带有明天日期的新文件。我已经设置了时区EST在我的php代码,但它似乎不接受我的时区。

这是我的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!!!";

这是设置时区的正确方法吗,还是我这样做完全错了?

提前感谢您的帮助。

试试"America/New_York":

date_default_timezone_set('America/New_York');

查看时区列表:http://php.net/manual/en/timezones.america.php

我找到了问题的答案。尽管我在文件中设置了时区,但实际上我必须重新配置服务器本身的时间。我登录到服务器并运行这行简单的代码:

date MMDDhhmmYYYY

我记得我已经在服务器上设置了时区设置,所以我不确定为什么他们没有坚持,但这已经解决了我的问题。