我正在使用以下内容让用户在表单中输入日期:
<input name="name" type="date" id="id"/>
我想知道是否有一种方法可以从中解析日、月和年,并将它们设置为不同的变量。我试图只使用 Javascript,而不是 PHP。
3个变量将是整数。
谢谢。
我正在使用以下内容让用户在表单中输入日期:
<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
s 处理多种输入格式 - 它需要 YYYY/MM/DD、YYYY-MM-DD、MM/DD/YYYY,甚至是全文日期('October 25, 2013')等,而无需您编写自己的解析器。然后可以轻松检查有效日期!!d.valueOf()
- 如果它是好的,则为 true,否则为 false :)
您将希望将值拆分为“-”,而不是“/”。例如,
$( "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
你可以这样尝试:-
function parseDate(input) {
var str= input.split('/');
return new Date(str[0], str[1]-1, str[2]);
}
str[1]-1
因为月份从 0 开始。
您也可以检查Date.parse(string)但这取决于实现。
使用 ES9 改进正则表达式。你可以这样使用。
const
reDate = /([0-9]{4})-([0-9]{2})-([0-9]{2})/,
match = reDate.exec('2019-05-29'),
year = match[1], //2019
month = match[2], //05
day = match[3]; //29