【问题标题】:DateTime timezone not found in database在数据库中找不到 DateTime 时区
【发布时间】:2016-01-18 18:10:00
【问题描述】:

有没有其他人遇到过这个奇怪的问题? 错误信息:

致命错误:带有消息的未捕获异常“异常” 'DateTime::__construct(): 无法解析时间字符串 (01/18/2016 00:00 AM America/New_York) 在位置 17 (A):时区不能 在数据库中找到'

异常:DateTime::__construct():解析时间字符串失败 (01/18/2016 00:00 AM America/New_York) 在位置 17 (A): 在数据库中找不到时区

原始 PHP 代码:

$datetime = new DateTime(trim(html_entity_decode($this->input->post('publish_date').' '.$_POST['schedule_time'].' '.$_POST['schedule_meridian'] . ' ' .$_POST['schedule_timezone'])));
$date = $datetime->format('D, d M Y H:i:s O');

【问题讨论】:

标签: php datetime


【解决方案1】:

恐怕你已经像这样创建了 DateTime 对象:

$date = new DateTime('01/18/2016 00:00 AM America/New_York');

这不是supported/有效的日期时间格式!

如果您想从另一种格式创建 DateTime 对象,您必须改为调用 DateTime::createFromFormat(),查看:

$timezone = new DateTimeZone('America/New_York');
$strdate  = '01/18/2016 00:00 AM';
$date     = DateTime::createFromFormat('m/d/Y H:i A', $strdate, $timezone);

PHP 文档状态:

DateTime::createFromFormat / date_create_from_format — 返回新的 DateTime 对象按照指定格式格式化

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2012-12-03
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多