我需要验证字段的日期格式,因为我的数据库只访问此(Y-m-d)格式。
因此,我需要能够将任何其他日期格式转换为此格式的格式。 我遇到的一个问题是,根据我在输入日期字段中使用日期格式的浏览器更改。例如当前的firefox浏览器日期格式是mm / dd / yyyy但我需要它来更改为(Y-m-d)。
我的表格
double
我希望能够隐藏任何这些格式 (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)
的相同#include<type_traits>
#include<tuple>
#include<utility>
#include<iostream>
/* For generic types use the type signature of their operator() */
template <typename T>
struct closure_traits : public
closure_traits<decltype(&T::operator())> {};
/* Otherwise, we do a template match on a function type. */
template <typename ClassType, typename ReturnType,
typename... ArgTypes>
struct closure_traits<ReturnType (ClassType::*) (ArgTypes... args) const>
{
using arity = std::integral_constant<std::size_t,
sizeof...(ArgTypes)>;
using Ret = ReturnType;
/* The argument types will be the same as the types of the
* elements of a tuple composed of them.
*/
template <std::size_t I>
struct Args {
using type = typename std::tuple_element<I,
std::tuple<ArgTypes...>>::type;
};
};
int main() {
auto thing = [=] (int x) {return x;};
std::cerr << "The number of arguments is "
<< closure_traits<decltype(thing)>::arity::value << std::endl;
return 0;
}
我解决这个问题的一种方法是使用 jquery datepicker ,但它在 firefox 57 以后不起作用...(是的,我尝试更改输入字段类型=“日期”到该类型=“文本”但仍然不起作用...
<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>
错误消息:在布尔值上调用成员函数format() 为什么jquery datepicker在firefox 57中不起作用
答案 0 :(得分:0)
您可以使用strtotime
。 http://php.net/manual/en/function.strtotime.php
$date = date('Y-m-d', strtotime($_POST['DateField']));
答案 1 :(得分:0)
试试这个
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