【问题标题】:PHP : reformat a date inPHP:重新格式化日期
【发布时间】:2017-06-30 17:56:28
【问题描述】:

早安,

我从 imap_fetch_overview PHP 函数得到以下日期:

$overview = imap_fetch_overview($inbox, $email_number, 0);

...

$date_event = $overview[0]->date;

这会输出类似“Fri, 30 Jun 2017 16:27:44 +0000 (UTC)”的日期

与此同时,我已将默认时区设置如下:

date_default_timezone_set('Europe/Brussels');

我现在想要的是能够以 dd.mm.yyyy HH:mm:ss 格式(本地时间,在我的情况下为 30.06.2017 18:27:44)检索我的 $date_event。

因此我尝试了:

$date_event_formated = $date_event('dd.mm.YYYY HH:ii:ss');

调用“echo $date_event_formated;”时,我得到的唯一结果是致命错误。

很抱歉,如果这个问题听起来很愚蠢,但我真的不明白我在这里做错了什么?在打扰您之前,我查看了参考网站http://php.net/manual/fr/function.date.php,但我可能遗漏了一些东西。

非常感谢您的宝贵时间和帮助。

【问题讨论】:

标签: php date datetime


【解决方案1】:

虽然 Jakub 的回答没有任何问题,但使用 php 5.3 及更高版本您也可以使用 DateTime::createFromFormat,使用精确掩码来解析传入的日期字符串。

$oldDate = 'Fri, 30 Jun 2017 16:27:44 +0000 (UTC)';
$date = DateTime::createFromFormat('D, d M Y H:i:s T e', $oldDate);
echo $date->format('Y-m-d');

【讨论】:

    【解决方案2】:

    strtotime() 能够处理您拥有的格式并将其转换为时间戳。然后,您可以使用date() 函数将日期格式化为您想要的任何格式:

    $date_event = 'Fri, 30 Jun 2017 16:27:44 +0000 (UTC)';
    echo date('d.m.Y H:i:s',strtotime($date_event));
    //outputs: 30.06.2017 18:27:44
    

    以下是工作示例:

    https://3v4l.org/obfNB

    【讨论】:

      【解决方案3】:
      use strtotime:
      
      $date_event = 'Fri, 30 Jun 2017 16:27:44 +0000 (UTC)';
      echo date('d.m.Y H:i:s',strtotime($date_event));
      

      【讨论】:

      • 非常感谢维沙尔
      猜你喜欢
      • 1970-01-01
      • 2019-12-25
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多