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

致命错误:未捕获异常'异常'与消息'DateTime::__construct():未能解析时间字符串

危卜鹰
2023-03-14

我得到这个错误

(!)致命错误:未捕获异常'异常'与消息'DateTime::__construct():未能解析时间字符串(06-28-2014 07:43:58 )在位置0(0):意外字符'在 /Users/matt/Desktop/Likes/forgot/activate.php第17行

当你试图这么做的时候

//DB query
$stmt = $con->prepare("SELECT token_created_at from reset WHERE token = :urltoken");
$stmt->bindValue(':urltoken', $_GET['token']);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
     $token_created_at = $row['token_created_at'];
}

//Remove after testing
echo $token_created_at;

$my_dt = new DateTime($token_created_at);

//Modify error
$expires_at = $my_dt->modify('+1 hour');

//Return current time to match
$current_time = date('m-d-Y H:i:s ', time());

第17行是$my\u dt=new DateTime($token\u created\u at) 这是我的时间格式06-28-2014 07:43:58

这就是我如何生成token_created_at$time_gen=date('m-d-Y H: i: s', time());


共有3个答案

鲍钊
2023-03-14

试试这个:

$token_created_at = DateTime::createFromFormat("m-d-Y H:i:s", $token_created_at);
$my_dt = new DateTime($token_created_at->format('Y-m-d H:i:s'));
$expires_at = $my_dt->modify('+1 hour');

这将产生

2014-06-28 08:43:58
易星纬
2023-03-14

更新了我的答案

function date_time( $date ) {
    if( $date == "" ){
        return "";
    } else {
        // echo $date;
        $my_date  = DateTime::createFromFormat( 'm-d-Y H:i:s', $date );
        // echo '<pre>';
        // print_r($my_date);
        // echo '</pre>';
        $new_date = $my_date->format( 'Y-m-d H:i:s' );
        return $new_date;
    }
}

$save = date_time('06-28-2014 07:43:58');
$my_dt = new DateTime( $save );

//Modify error
$expires_at = $my_dt->modify('+1 hour');
$expires_date = $my_dt->format( 'Y-m-d H:i:s' );

echo $expires_date;
//Return current time to match
$current_time = date('m-d-Y H:i:s', time());
echo $current_time;
令狐昌胤
2023-03-14

DateTime解析器不支持您传递的日期字符串。必须使用createFromFormat创建DateTime对象。此方法允许您在创建新的DateTime对象时指定自定义格式:

$my_dt = DateTime::createFromFormat('m-d-Y H:i:s', $token_created_at);

如果您仍然收到一个错误,这意味着您的$token_created_at不是您指定的格式:

$now = date('m-d-Y H:i:s'); //string(19) "06-28-2014 15:00:47"

var_dump(DateTime::createFromFormat('m-d-Y H:i:s', $now));
object(DateTime)#1 (3) {
  ["date"]=>
  string(19) "2014-06-28 15:00:47"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Europe/Berlin"
}

编辑

我看到您的问题了-格式字符串在s之后有一个空格。格式字符串必须完全匹配:

$my_dt = DateTime::createFromFormat('m-d-Y H:i:s ', $token_created_at);
 类似资料:
  • 我在输出在文件中创建的日期时遇到问题。 我一直在遵循一个关于如何创建真正基本的CMS平台的教程,帮助我了解和的一些基础知识,在我试图输出页面创建日期之前,一切都进展顺利。 这就是我得到的错误 现在,当我删除我的中的第22行时,它输出数据库中的完整日期,即,但我试图格式化它以显示像. 这是我的文件中的代码 然后在我的在我显示这个的地方,我有这个代码来格式化日期。 现在从我的中删除这个不会做任何事情,

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

  • 我正在尝试运行MySQL PDO查询。我不知道为什么我会得到一个致命的错误。我查过其他帖子,但他们的答案似乎并不能解决我的。 脚本连接到数据库很好。用户名和密码是正确的,我已经在下面的脚本中删除了它们。 我的输出:

  • 我在进行贝宝支付时出现了经验错误。 致命错误:未捕获异常“PayPal\exception\PayPalConnectionException”,消息为“访问https://api.sandbox.paypal.com/v1/payments/payment时获得Http响应代码400”。在C:\xampp\htdocs\paypal\workload\third_party\vendor\pay

  • 我正在使用下面的函数计算从出生日期(欧洲格式DD/MM/YYYY)算起的人的年龄(以年为单位),这些日期作为文本存储在Wordpress高级自定义字段中 在大多数情况下,它工作正常,但在某些情况下,我得到以下错误: 工作正常的数据示例:$age=get_age($birthday); 对于$birth value=05/04/1946,它可以正常工作,但是对于$birth value=26/01/

  • Twilio新手使用测试帐户。我按照这里列出的安装Twilio PHP的说明进行了安装:https://www.Twilio.com/docs/quickstart/php/sms 因为我得到了一个证书错误,所以我的主机提供程序建议我更改CURLOPT_SSL_VERIFYPEER=>false(从true改为true)。但现在我得到了这个错误。如何修复?:致命错误:未捕获异常“services_