如何正确验证特定格式的日期?
How to properly validate date to a specific format?
我需要验证我的字段的日期格式,因为我的数据库只访问这种 (Y-m-d) 格式。
因此,我需要能够将任何其他日期格式转换为这种格式。
我遇到的一个问题是,根据我使用的浏览器,我在输入日期字段中使用的日期格式会发生变化。例如当前的 firefox 浏览器日期格式是 mm/dd/yyyy 但我需要它来更改为 (Y-m-d).
我的表格
<div class="form-group">
<label for="DateField">Age: </label>
<input type="date" class="form-control" id='DateField' name="date" placeholder="DD-MM-YYYY" size="10" minlength="6" maxlength="10" required/>
</div>
我希望能够转换任何这些格式
(Y/m/d, d/m/Y, m/d/Y, d-m-Y, m-d-Y, Y.m.d, d.m.Y, m.d.Y) 到 (Y-m-d)
$format = "d-m-Y";
$date = DateTime::createFromFormat($format, $_POST['DateField'])->format('Y-m-d'); //here getting error msg
$date_errors = DateTime::getLastErrors();
if($date_errors['warning_count'] + $date_errors['error_count'] > 0) {
// createFromFormat returns false if the format is invalid;
echo 'Date format is incorrect e.g Y-m-d';
exit();
}
我解决它的一种方法是使用 jquery 日期选择器 但它在 firefox 57 中不起作用继续...(是的,我尝试将输入字段 type="date" 更改为 type="text" 但仍然不起作用...
<script type="text/javascript">
var datefield = document.createElement("input");
datefield.setAttribute("type", "date");
if (datefield.type !== "date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker
document.write('<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/dot-luv/jquery-ui.css " rel="stylesheet" type="text/css" />\n');
document.write('<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"><\/script>');
}
</script>
<script>
$(function(){
if (!Modernizr.inputtypes.date) { //if browser doesn't support input type="date", initialize date picker widget:
// If not native HTML5 support, fallback to jQuery datePicker
$('input[type=date]').datepicker({
// Consistent format with the HTML5 picker
dateFormat : 'dd-mm-yy',
maxDate: 0
},
// Localization
$.datepicker.regional['it']
);
}
});
</script>
错误消息:调用布尔值的成员函数 format()
为什么 jquery 日期选择器在 firefox 57
中不工作
您可以为此使用 strtotime
。 http://php.net/manual/en/function.strtotime.php
$date = date('Y-m-d', strtotime($_POST['DateField']));
试试这个
function validateDate($date, $format = 'Y-m-d'){
$v = DateTime::createFromFormat($format, $date);
return $v && $v->format($format) == $date;
}
var_dump(validateDate('2000-02-20', 'Y-m-d')); //true
var_dump(validateDate('20-02-2000', 'Y-m-d')); //false
我需要验证我的字段的日期格式,因为我的数据库只访问这种 (Y-m-d) 格式。
因此,我需要能够将任何其他日期格式转换为这种格式。 我遇到的一个问题是,根据我使用的浏览器,我在输入日期字段中使用的日期格式会发生变化。例如当前的 firefox 浏览器日期格式是 mm/dd/yyyy 但我需要它来更改为 (Y-m-d).
我的表格
<div class="form-group">
<label for="DateField">Age: </label>
<input type="date" class="form-control" id='DateField' name="date" placeholder="DD-MM-YYYY" size="10" minlength="6" maxlength="10" required/>
</div>
我希望能够转换任何这些格式 (Y/m/d, d/m/Y, m/d/Y, d-m-Y, m-d-Y, Y.m.d, d.m.Y, m.d.Y) 到 (Y-m-d)
$format = "d-m-Y";
$date = DateTime::createFromFormat($format, $_POST['DateField'])->format('Y-m-d'); //here getting error msg
$date_errors = DateTime::getLastErrors();
if($date_errors['warning_count'] + $date_errors['error_count'] > 0) {
// createFromFormat returns false if the format is invalid;
echo 'Date format is incorrect e.g Y-m-d';
exit();
}
我解决它的一种方法是使用 jquery 日期选择器 但它在 firefox 57 中不起作用继续...(是的,我尝试将输入字段 type="date" 更改为 type="text" 但仍然不起作用...
<script type="text/javascript">
var datefield = document.createElement("input");
datefield.setAttribute("type", "date");
if (datefield.type !== "date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker
document.write('<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/dot-luv/jquery-ui.css " rel="stylesheet" type="text/css" />\n');
document.write('<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"><\/script>');
}
</script>
<script>
$(function(){
if (!Modernizr.inputtypes.date) { //if browser doesn't support input type="date", initialize date picker widget:
// If not native HTML5 support, fallback to jQuery datePicker
$('input[type=date]').datepicker({
// Consistent format with the HTML5 picker
dateFormat : 'dd-mm-yy',
maxDate: 0
},
// Localization
$.datepicker.regional['it']
);
}
});
</script>
错误消息:调用布尔值的成员函数 format() 为什么 jquery 日期选择器在 firefox 57
中不工作您可以为此使用 strtotime
。 http://php.net/manual/en/function.strtotime.php
$date = date('Y-m-d', strtotime($_POST['DateField']));
试试这个
function validateDate($date, $format = 'Y-m-d'){
$v = DateTime::createFromFormat($format, $date);
return $v && $v->format($format) == $date;
}
var_dump(validateDate('2000-02-20', 'Y-m-d')); //true
var_dump(validateDate('20-02-2000', 'Y-m-d')); //false