我想要一个输入字段,旁边有一个按钮。从输入字段中减去日期
在输入字段我将进入这样一个日期:2011-07-08
而当我打的按钮,它应该读的时候已经在输入字段,用3减去它几个月和一天。
这可能吗?
在此先感谢
我想要一个输入字段,旁边有一个按钮。从输入字段中减去日期
在输入字段我将进入这样一个日期:2011-07-08
而当我打的按钮,它应该读的时候已经在输入字段,用3减去它几个月和一天。
这可能吗?
在此先感谢
是的。首先,你阅读的日期和你转换成日期对象
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());
可以使用Date
对象(见here):
Date
对象最简单的方法是把它分解进入一个数组,然后使用几个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;
然后这些日子也是一样的。
是的,这是可能的,它是最干净的,如果你可以做到这一点没有一些神秘的正则表达式魔法。按日期转换为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);
几乎同样的事情,但在一个新的对象:'B =新的日期(a.getFullYear(),a.getMonth() - 3,a.getDate ()-1);'另外,请注意输入到'new Date(string)'的字符串格式支持取决于浏览器。 – some 2011-02-24 11:14:13
感谢您的帮助,但这会导致包含日期的警告框。我想要的只是将字段从一个日期更改为另一个日期。 例如:2011-02-24 - >>按钮 - >> 2010-11-25 – Dreni 2011-02-24 11:19:48
当然,警报是一个例子。一个你有字符串的日期,你可以把它放在任何你想要的地方。在你的情况下,你会用'document.getElementById('field''id')代替最后一行。value = date.toString();' – Andrea 2011-02-24 11:21:38