我试图在focus.add_days函数中创建一个javascript日期对象,以便在元素中的给定日期添加几天。 问题是javascript对象并不期望字符串" Y-m-d"那么如何在不解析字符串的情况下创建日期对象" Y-m-d"成碎片,还是唯一的方法?
trigger = {
fecha_ini: function(){
$('input[name="fecha_ini"]').on('change',function(){
console.log('hi');
var fecha_fin = $(':input [name=fecha_fin]');
var min = $(this).val();
//here is where i pass the "Y-m-d" string as the date argument
var max = fechas.add_days(min,31*4);
fecha_fin.attr('min',min);
fecha_fin.attr('max',max);
fecha_fin.val('');
})
}
};
fechas = {
add_days: function addDays(date, days) {
//here is where i use the string "Y-m-d" to create the date object, but obviusly doesnt work
var result = new Date(date);
result.setDate(date.getDate() + days);
return result;
}
};
trigger.fecha_ini();
答案 0 :(得分:8)
如何在不解析字符串的情况下创建日期对象" Y-m-d"成碎片,还是唯一的方法?
虽然 Date.parse 会将y / m / d /格式的字符串转换为日期对象,但手动解析是唯一明智的方法:
// s is format y-m-d
// Returns a date object for 00:00:00 local time
// on the specified date
function parseDate(s) {
var b = s.split(/\D/);
return new Date(b[0], --b[1], b[2]);
}
ES5指定了所有浏览器都应支持的form of ISO 8601,但不一致或所有正在使用的浏览器都不支持它。
答案 1 :(得分:8)
使用valueAsDate
:
valueAsDate
退货:Date
返回/设置元素的值,解释为日期,如果无法转换,则设置为null
。
<强>演示:强>
<input type="date" id="d" value="2018-02-14">
<button onclick="console.log( document.getElementById('d').valueAsDate )">
change the date (or not) and click me
</button>
&#13;
答案 2 :(得分:2)
有了我,它没有做任何事情。
我只是写 新日期($('#html5dateinput')。val());
就是这样。我得到了正确的日期对象。我正在使用谷歌浏览器版本38,我在Ubuntu 14.04下的Firefox 33上进行了测试
答案 3 :(得分:1)
javascript Date
对象始终在UTC时区解析<input type=date>
的原始值!
new Date(input.value) // Date object, date interpreted as UTC but printed in the local TZ
Date.parse(input.value) // Unix time in ms, date interpreted as UTC
如果<input type=date>
的值应在本地时区中解释,则可以通过添加如下时间来强制使用它:
new Date(input.value+"T00:00") // Date object, date interpreted and printed in the local TZ
Date.parse(input.value+"T00:00") // Unix time in ms, date interpreted as local TZ
强调我的
例如,“
2011-10-10
”(仅日期格式),“2011-10-10T14:48:00
”(日期时间格式)或“2011-10-10T14:48:00.000+09:00
”(日期时间格式,以毫秒为单位,时区)可以传递并进行解析。 缺少时区偏移时,仅日期形式被解释为UTC时间,而日期时间形式被解释为本地时间。
答案 4 :(得分:0)
<强> Use valueAsNumber 强>
var myDate = new Date(input.valueAsNumber);