尝试验证字符串以检查其格式是否为07.05.2013,不确定如何处理它。
考虑是否'。'是第3个和第6个字符,然后检查其余字符是否是数字,但我不知道如何实现。
答案 0 :(得分:4)
如果您只需要解析日期,则可以使用php的日期时间功能。
<?php
$date = DateTime::createFromFormat('d.m.Y', '07.05.2013');
echo $date->format('Y-m-d');
?>
答案 1 :(得分:3)
使用DateTime::CreateFromFormat()
方法。这将验证您的输入并同时创建一个日期对象(然后您可以使用它来处理日期)。
$dateObj = DateTime::CreateFromFormat('d.m.Y', $inputString);
如果日期无效或格式错误,$dateObj
将为false
。
如果它是所需格式的有效日期,则$dateObj
将是DateTime
个对象。
希望有所帮助。
答案 2 :(得分:2)
if (preg_match('/^\d{2}\.\d{2}\.\d\{4}$/', $yourstring)) {
...
}
如果您的字符串匹配dd.dd.dddd这样的表达式,其中d是数字,那么这将是真的。
答案 3 :(得分:2)
您还可以使用checkdate功能:
$date= '07.05.2013';
$date_arr= explode('.', $date);
if (checkdate($date_arr[0], $date_arr[1], $date_arr[2])) {
// validate your date here
}
答案 4 :(得分:1)
类似的东西:
$date = DateTime::createFromFormat('d.m.Y', $yourStringWhichMightBeADate);
if ($date)
{
// it's a date, so use it
}
或者:
$date = DateTime::createFromFormat('m.d.Y', $yourStringWhichMightBeADate);
if ($date)
{
// it's a date, so use it
}
如果月份是第一个月而不是月份的那一天。
答案 5 :(得分:1)
解决方案1:
这是我做的方式,它适用于您决定输入的每个输入(例如:“12.02.1996”,“12.30.1996”,“dasdsadas”等等。)
public function valid_date($inputdate){
$date = $inputdate;
if (strtotime($date)){
if (strpos($date,'.') !== false) {
list($day, $month, $year) = explode('/', $date);
return checkdate($month, $day, $year);
}else{
return false;
}
}else{
return false;
}
}
如果输入日期是10/10/1996也是有效格式,或10/02/1996,它将不接受它们,因为我要求用户使用“。”格式。如果您不想进行此验证,只需删除“if”即可。
解决方案2:
在php.net找到了这个,非常干净有趣!
public function valid_date($date, $format = 'd.m.Y'){
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}