当前位置: 首页 > 知识库问答 >
问题:

未捕获的异常'异常'与消息'DateTime::__construct():

范志勇
2023-03-14

我在输出在PHP文件中创建的日期时遇到问题。

我一直在遵循一个关于如何创建真正基本的CMS平台的教程,帮助我了解数据库PHP的一些基础知识,在我试图输出页面创建日期之前,一切都进展顺利。

这就是我得到的错误

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings. 
You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of
those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.' in 
C:\MAMP\htdocs\basic-cms\page.php:22 Stack trace: #0 C:\MAMP\htdocs\basic-cms\page.php(22): DateTime->__construct('2016-02-17 10:3...') #1 {main} thrown in C:\MAMP\htdocs\basic-cms\page.php on line 22

现在,当我删除我的page.php中的第22行时,它输出数据库中的完整日期,即2016-02-17 10:38:05,但我试图格式化它以显示像jS M这样的日期, Y(17 Feb 2016).

这是我的page.php文件中的代码

if ( $page ) {
    $page['created'] = new DateTime( $page['created'] );

    if ( $page['updated'] ) {
        $page['updated'] = new DateTime( $page['created'] );
    }
}

然后在我的show里面。php在我显示这个的地方,我有这个代码来格式化日期。

Created on <?php echo $page['created']->format('jS M, Y'); ?>

现在从我的show.php中删除这个不会做任何事情,因为错误不在其中-但是我想我要向你们展示我正在努力实现的目标。

就像我说的,这是一个非常基本的CMS网站,我通过遵循YouTube教程来创建,我完全复制了他的代码,他没有错误,所以我肯定这是一个错别字,我只是找不到。

共有2个答案

谷翰飞
2023-03-14

如果在创建页面时使用数据库保存页面详细信息:

您实际上可以在数据库中添加一个DateTime列,然后当创建页面并插入需要添加的任何内容时,将该列设为默认的时间戳,它会自动添加为您创建页面的时间和日期。

然后从数据库中获取时间戳(MySQLi版本):

$db = mysqli_connect('host', 'user', 'pass', 'dbname');
$result = $db->query("SELECT * FROM tbl_name");
// add an error check here
while($row = mysqli_fetch_array($result)){
   if($row['columnPageID'] == 'the page ID you are on'){
       $createdOn = $row['columnName'];
   }
}
$db->close();

此代码将不起作用,因此您可以理解它。

贾俊艾
2023-03-14

这是因为在php配置中没有设置时区。

在php顶部添加以下代码行。ini文件

date.timezone = "US/Central"

然后重新启动web服务器

您还可以使用以下函数通过php脚本进行设置:

date_default_timezone_set('America/Los_Angeles');

别忘了重新加载/重启apache服务器

 类似资料:
  • 昨天我在一个网站上工作,我们将使用。它工作得很好等等。然而,当我现在启动它,我得到一个错误... 我们从另一个网站获得信息,该网站发布的日期如下: 2016-30-24T11:30:00.000 01:00 然而,我们只想展示: 11:30:00 小时、分钟和秒。 我们采用以下方法: 这是昨天的工作,但现在我得到以下错误: 致命错误:未捕获异常'异常'与消息'DateTime::__constru

  • 我得到这个错误 (!)致命错误:未捕获异常'异常'与消息'DateTime::__construct():未能解析时间字符串(06-28-2014 07:43:58 )在位置0(0):意外字符'在 /Users/matt/Desktop/Likes/forgot/activate.php第17行 当你试图这么做的时候 第17行是

  • 当出现错误时,我的java代码中会抛出异常。然后,我使用jdb运行代码,以便在出现异常时,可以看到代码的状态并进行调试。对于我抛出的所有异常,我放入了一个有用的字符串消息。然而,当jdb捕捉到异常时,它不会同时打印这个字符串。如何打印此字符串? 我已经在谷歌上搜索并阅读了文档,但我不知道怎么做。 如果我有测试课程: 并通过jdb运行它:

  • 我如何解决这个问题。 这是我的网站 这是完全的错误。 致命错误:未捕获的异常“exception”,消息为“DateTime::\u构造():无法分析位置0(0)处的时间字符串(03-22-2016):在/home/budweiser/public\u html/verify中出现意外字符”。php:13堆栈跟踪:#0/home/budweiser/public_html/verify。php(1

  • 本节介绍如何使用三个异常处理程序组件(try、catch 和 finally)来编写异常处理程序。 然后,介绍了 Java SE 7中引入的 try-with-resources 语句。 try-with-resources 语句特别适合于使用Closeable的资源(例如流)的情况。 本节的最后一部分将通过一个示例来分析在各种情况下发生的情况。 以下示例定义并实现了一个名为ListOfNumbe