加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 无法解析位置41(i)的时间字符串:双倍时区规范

发布时间:2020-05-25 09:57:30 所属栏目:PHP 来源:互联网
导读:我正在使用 jquery daterangepicker,它反过来使用jQuery datapicker. 我的Ubuntu系统工作正常.浏览器正在发送可解析字符串: $dateStarted = new DateTime($post[startDate]); // Thu Nov 15 2012 00:00:00 GMT-0700 (MST)print_r($dateStarted);

我正在使用 jquery daterangepicker,它反过来使用jQuery datapicker.

我的Ubuntu系统工作正常.浏览器正在发送可解析字符串:

$dateStarted = new DateTime($post['startDate']); // Thu Nov 15 2012 00:00:00 GMT-0700 (MST)
print_r($dateStarted);

输出:

DateTime Object
(
    [date] => 2012-11-15 00:00:00
    [timezone_type] => 1
    [timezone] => -07:00
)

在我们的测试者Windows系统中,浏览器正在字符串中发送扩展的时区:

$dateStarted = new DateTime($post['startDate']); // Thu Nov 15 2012 00:00:00 GMT-0700 (Mountain Standard Time)
print_r($dateStarted);

抛出异常:

Exception: DateTime::__construct(): Failed to parse time string 
 (Thu Nov 15 2012 00:00:00 GMT-0700 (Mountain Standard Time)) 
 at position 41 (i): Double timezone specification

我已经google了,找不到关于这个特定的PHP错误的任何资源.

我通过分析返回相同结果的括号内的文本来“解决”这个问题:

$dateString = strstr($dateString," (",true); // Thu Nov 15 2012 00:00:00 GMT-0700

这似乎很不好,我正在寻找如何正确地做这个建议.

使用 DateTime::createFromFormat()作为Marc B建议似乎是一个更好的解决方案.

我所得到的是:

$dateStarted = DateTime::createFromFormat('D M d Y H:i:s e+',$post['startDate']); // Thu Nov 15 2012 00:00:00 GMT-0700 (Mountain Standard Time)
print_r($dateStarted);
print_r(DateTime::getLastErrors());

哪个输出正确的日期:

DateTime Object
(
    [date] => 2012-11-15 00:00:00
    [timezone_type] => 1
    [timezone] => -07:00
)

Array
(
    [warning_count] => 1
    [warnings] => Array
        (
            [33] => Trailing data
        )

    [error_count] => 0
    [errors] => Array
        (
        )

)

格式的最后是使这项工作的魔法.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读