2013-10-25 53 views

回答

5

你最好的选择,如果你接受输入,并将其转换为date,无论是部分还是作为Date对象分开,是简单地通过将其输入值构造一个新的Date对象:

var input = document.getElementById('id').value; 
var d = new Date(input); 

if (!!d.valueOf()) { // Valid date 
    year = d.getFullYear(); 
    month = d.getMonth(); 
    day = d.getDate(); 
} else { /* Invalid date */ } 

通过这种方式,您可以利用Date处理多种输入格式 - 需要YYYY/MM/DD,YYYY-MM-DD,MM/DD/YYYY,甚至是全文日期(2013年10月25日)等你没有你写你自己的解析器。然后通过!!d.valueOf()轻松检查有效日期 - 如果不错,则为true;如果不是,则为false

+0

getMonth()将在1月份返回0,2月份为1 ... 12月份,因此您必须添加1以获取正确的月份数量 – vtomic85

0

你可以试试这样: -

function parseDate(input) { 
    var str= input.split('/'); 
    return new Date(str[0], str[1]-1, str[2]); 
} 

str[1]-1作为个月从0

开始你也可以检查Date.parse(string)但这implemetation依赖。

+0

这个逻辑似乎是工作,但是当我运行此,从形式,我得到的,“无效的日期日期的输入“。我认为输入应该是一个字符串,这是正确的吗? –

+0

您需要以yyyy/mm/dd格式解析日期才能使用! –

+0

是的,它必须是字符串! –

1

您需要将值' - '分开,而不是'/'。例如,

$("input").change(function(e) { 
    var vals = e.target.value.split('-'); 
    var year = vals[0]; 
    var month = vals[1]; 
    var day = vals[2]; 
    console.info(day, month, year); 
}); 

这里是工作示例的jsbin:http://jsbin.com/ayAjufo/2/edit

相关问题