如何正确验证日期到特定格式?

时间:2018-01-08 21:21:49

标签: javascript php jquery date date-formatting

我需要验证字段的日期格式,因为我的数据库只访问此(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中不起作用

2 个答案:

答案 0 :(得分:0)

您可以使用strtotimehttp://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