我想要一个带有按钮的输入字段。
在输入字段中,我将输入如下日期: 2011-07-08
当我按下按钮时,它应该读取输入字段中输入的时间并将其减去3个月和一天。
这可能吗?
提前致谢
答案 0 :(得分:1)
是。首先,您阅读日期并转换为日期对象
var dateString = document.getElementById('id of your field').value,
date = new Date(dateString);
然后你减去91天并输出结果
date.setDate(date.getDate() - 91);
alert(date.toString());
这里我假设您实际上想要91天而不是3个月和一天。如果你想要三个月和一天你会做
date.setMonth(date.getMonth() - 3);
date.setDate(date.getDate() - 1);
alert(date.toString());
Date对象将处理溢出,闰年和一切。
如果你想把它写到同一个领域,照顾零,你可以做
function assureTwoDigits(number) {
if (number > 9) {
return '-' + number;
}
else {
return '-0' + number;
}
}
并将最后一行更改为
document.getElementById('id of your field').value = date.getFullYear() + assureToDigits(date.getMonth()) + assureTwoDigits(date.getDate());
答案 1 :(得分:0)
您可以使用Date
个对象(请参阅here):
Date
对象答案 2 :(得分:0)
最简单的方法是将其拆分为数组,然后使用几个if / else语句:
var date = (whatever you're pulling the date in as).split('-');
if (date[1] > 3)
date[1] = date[1] - 3;
else
date[0] = date[0] - 1;
var dateOverflow = date[1]-3;
date[1] = 12 - dateOverflow;
然后同样的日子。
答案 3 :(得分:0)
是的,它是可能的,如果没有一些神秘的正则表达法术,你可以做到最干净。首先将日期转换为Date对象:
// this will get you a date object from the string:
var myDate = new Date("2011-07-08");
// subtract 3 months and 1 day
myDate.setMonth(myDate.getMonth()-3);
myDate.setDay(myDate.getMonth(), myDate.getDay()-1);
// And now you have the day and it will be correct according to the number of days in a month etc
alert(myDate);