Datetime PHP中意外的日期时间行为
下面是一段简单的代码,我试图在其中转换 字符串转换为DateTime对象。因为输入字符串无效 我希望“错误”打印 如何解决此问题?您可以使用检查给定日期字符串的格式是否有效: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
您可以将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