修改日期时间显示UTC时区

时间:2016-08-11 20:06:05

标签: php timezone

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

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

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试" America / New_York":

date_default_timezone_set('America/New_York');

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

答案 1 :(得分:0)

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

date MMDDhhmmYYYY

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