我使用用户输入的形式的日期如下:解析日期,月和年从Javascript“日期”的形式
<input name="name" type="date" id="id"/>
我想知道是否有解析的方式日期,月份和年份,并将它们设置为不同的变量。我试图只使用Javascript,而不是PHP。
3个变量将是整数。
谢谢。
我使用用户输入的形式的日期如下:解析日期,月和年从Javascript“日期”的形式
<input name="name" type="date" id="id"/>
我想知道是否有解析的方式日期,月份和年份,并将它们设置为不同的变量。我试图只使用Javascript,而不是PHP。
3个变量将是整数。
谢谢。
你最好的选择,如果你接受输入,并将其转换为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
你可以试试这样: -
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依赖。
这个逻辑似乎是工作,但是当我运行此,从形式,我得到的,“无效的日期日期的输入“。我认为输入应该是一个字符串,这是正确的吗? –
您需要以yyyy/mm/dd格式解析日期才能使用! –
是的,它必须是字符串! –
您需要将值' - '分开,而不是'/'。例如,
$("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
getMonth()将在1月份返回0,2月份为1 ... 12月份,因此您必须添加1以获取正确的月份数量 – vtomic85