Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime PHP中意外的日期时间行为_Datetime_Php 7 - Fatal编程技术网

Datetime PHP中意外的日期时间行为

Datetime PHP中意外的日期时间行为,datetime,php-7,Datetime,Php 7,下面是一段简单的代码,我试图在其中转换 字符串转换为DateTime对象。因为输入字符串无效 我希望“错误”打印 如何解决此问题?您可以使用检查给定日期字符串的格式是否有效: 您可以将date\u create\u from\u format格式化为解析格式的结果与原始日期字符串进行比较,如果不匹配,则出现错误: $input_date = '01/02/20'; $format = 'd/m/Y'; $expiryDate = \DateTime::createFromFormat($form

下面是一段简单的代码,我试图在其中转换 字符串转换为DateTime对象。因为输入字符串无效 我希望“错误”打印

如何解决此问题?

您可以使用检查给定日期字符串的格式是否有效:


您可以将
date\u create\u from\u format
格式化为解析格式的结果与原始日期字符串进行比较,如果不匹配,则出现错误:

$input_date = '01/02/20';
$format = 'd/m/Y';
$expiryDate = \DateTime::createFromFormat($format, $input_date);
if (!$expiryDate || ($expiryDate = $expiryDate->format($format)) != $input_date) {
    echo "Error" . PHP_EOL;
}
else {
    echo $expiryDate . PHP_EOL;
}

$input_date = '01/02/2020';
$format = 'd/m/Y';
$expiryDate = \DateTime::createFromFormat($format, $input_date);
if (!$expiryDate || ($expiryDate = $expiryDate->format($format)) != $input_date) {
    echo "Error" . PHP_EOL;
}
else {
    echo $expiryDate . PHP_EOL;
}
输出:

Error
01/02/2020

这破坏了使用createFromFormat的全部意义:-(你想实现什么?
01/02/20
createFromFormat
@bravemaster的有效输入。它不应该是有效的。“Y”是四位数的年份。“20”是两位数。它不适合指定的格式
$input_date = '01/02/20';
$format = 'd/m/Y';
$expiryDate = \DateTime::createFromFormat($format, $input_date);
if (!$expiryDate || ($expiryDate = $expiryDate->format($format)) != $input_date) {
    echo "Error" . PHP_EOL;
}
else {
    echo $expiryDate . PHP_EOL;
}

$input_date = '01/02/2020';
$format = 'd/m/Y';
$expiryDate = \DateTime::createFromFormat($format, $input_date);
if (!$expiryDate || ($expiryDate = $expiryDate->format($format)) != $input_date) {
    echo "Error" . PHP_EOL;
}
else {
    echo $expiryDate . PHP_EOL;
}
Error
01/02/2020