Php 检查日期是否具有特定格式
我需要检查一个日期是否有保存它的格式或否,我使用函数strptime(): 问题是格式似乎不起作用,我需要用格式年份验证所有日期(如:2010年、2020年……),但它们不是验证的,我不明白为什么在php日期文档中Y表示4位数的年份 有人有主意吗 编辑:使用CreateFromFormat:Php 检查日期是否具有特定格式,php,date,datetime,Php,Date,Datetime,我需要检查一个日期是否有保存它的格式或否,我使用函数strptime(): 问题是格式似乎不起作用,我需要用格式年份验证所有日期(如:2010年、2020年……),但它们不是验证的,我不明白为什么在php日期文档中Y表示4位数的年份 有人有主意吗 编辑:使用CreateFromFormat: if(DateTime::createFromFormat('Y', $contact[22])){ dsm("Bon format : ".$contact[22]); $date
if(DateTime::createFromFormat('Y', $contact[22])){
dsm("Bon format : ".$contact[22]);
$date_derniere_inscription = strtotime($contact[22]);
} else {
$date_derniere_inscription = null;
}
但是只有两位数字的日期,甚至值为0的日期也会被验证
“Y”格式似乎不起作用,所有值(例如,2012,但也有96或0)都会创建一个日期,而0值会创建“0000-07-11 10:38:45.000000”。。这种格式有什么问题?在这种情况下会有所帮助。如果给定的日期字符串不是给定的格式,它将返回false
$date = DateTime::createFromFormat('Y-m-d', '11-Jan-2018');
if ($date) {
echo 'In format';
} else {
echo 'Not in format';
}
要重置除年以外的所有字段(月、日、分、秒),可以使用:
$date = DateTime::createFromFormat('Y|', '2012');
输出为:2012-01-01 00:00:00.000000
。可以使用函数转换为任何格式。在这种情况下会有所帮助。如果给定的日期字符串不是给定的格式,它将返回false
$date = DateTime::createFromFormat('Y-m-d', '11-Jan-2018');
if ($date) {
echo 'In format';
} else {
echo 'Not in format';
}
要重置除年以外的所有字段(月、日、分、秒),可以使用:
$date = DateTime::createFromFormat('Y|', '2012');
输出为:
2012-01-01 00:00:00.000000
。可以使用函数转换为任何格式。您可以使用简单的正则表达式来完成此操作
/(\d{4})/
示例代码:
<?php
$pattern = "/(\d{4})/";
$year = "2015";
if(preg_match($pattern, $year)){
echo "Format correct!";
} else{
echo "Format incorrect!";
}
?>
有关正则表达式的更多信息,请查看
和
您可以使用一个简单的正则表达式来实现这一点
/(\d{4})/
示例代码:
<?php
$pattern = "/(\d{4})/";
$year = "2015";
if(preg_match($pattern, $year)){
echo "Format correct!";
} else{
echo "Format incorrect!";
}
?>
有关正则表达式的更多信息,请查看
和
谢谢这项工作,但我有点奇怪,我在createFromFormat中使用的格式是“Y”,但是只有两个数字的值也被验证了,如何避免呢?谢谢这项工作,但我有点奇怪,我在createFromFormat中使用的格式是“Y”,但是只有两个数字的值也被验证了,如何避免这种情况?在
$contact[22]
中的值是什么?我这里有多个值:输出:Bon format:0 Bon format:1996 Bon format:96,正如您可以看到的,所有值都已验证,另一个问题是,例如2012值,输出为2012-07-11 10:33:47.000000,我需要2012-01-01 00:00:000,$contact[22]
中的值是什么?我有多个值,这里是输出:Bon format:0 Bon format:1996 Bon format:96,正如您可以看到的,所有值都已验证,另一个问题是,例如2012值,输出是2012-07-11 10:33:47.000000,我需要2012-01-01 00:00:0000