date_create_from_format和DateTime :: createFromFormat函数在服务器上中断

时间:2017-01-06 23:11:04

标签: php datetime server localhost

我最近将我的客户端网站上传到临时服务器上,这样他们就可以在我调整设计时开始使用数据。

当我启动时,我的一个滑块和一个页面完全崩溃[注意:这只发生在服务器端;我的localhost网站继续完美工作]。

我把它缩小到我使用date_create_from_format()函数,因为我在两个页面上使用它,当我删除持有该位的php时,该网站工作正常。我已经搜索了我的文件中任何遗漏的分号或括号,我找不到任何明显的错误。这是我在本地主机上的代码。

<p>
              <?php 
                $end = date_create_from_format('Ymd',$ending_date);
                $start = date_create_from_format('Ymd',$starting_date);
                echo "<span class='month'>" . $start->format('F') . "</span>";
                echo " ";
                echo "<span class='day'>" . $start->format('j') . "</span>";
                echo ", ";
                echo "<span class='year'>" . $start->format('Y') . "</span>";

                echo " - ";

                echo "<span class='month'>" . $end->format('F') . "</span>";
                echo " ";
                echo "<span class='day'>" . $end->format('d') . "</span>";
                echo ", ";
                echo "<span class='year'>" . $end->format('Y') . "</span>";
                echo ", $location";
               ?>           
            </p>

我也尝试将它从对象转换为程序函数(见下文),但结果完全相同。

<p>
                  <?php 
                    $end = DateTime::createFromFormat('Ymd',$ending_date);
                    $start = DateTime::createFromFormat('Ymd',$starting_date);
                    echo "<span class='month'>" . date_format($start,'F') . "</span>";
                    echo " ";
                    echo "<span class='day'>" . date_format($start,'j') . "</span>";
                    echo ", ";
                    echo "<span class='year'>" . date_format($start,'Y') . "</span>";

                    echo " - ";

                    echo "<span class='month'>" . date_format($end,'F') . "</span>";
                    echo " ";
                    echo "<span class='day'>" . date_format($end,'d') . "</span>";
                    echo ", ";
                    echo "<span class='year'>" . date_format($end,'Y') . "</span>";
                    echo ", $location";
                   ?> 
              </p>

感谢“Sysix”提供有关分配时区的答案。我做了以下调整(见下文),但问题仍然存在。

    <?php 
  $end = DateTime::createFromFormat('Ymd', $ending_date, new DateTimeZone('America/Toronto'));
  $start = DateTime::createFromFormat('Ymd', $starting_date, new DateTimeZone('America/Toronto'));
 ?>

有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我找到了一个通知,DateTime :: createFromFormat忽略了设置的TimeZone。您必须为对象设置显式时区。

http://php.net/manual/de/datetime.createfromformat.php#116027

答案 1 :(得分:0)

来自您的评论:您的PHP版本是5.2.17

但是从PHP 5.3起可以使用DateTime :: createFromFormat

查看文档:{​​{3}}