从输入字段中减去日期

时间:2011-02-24 10:51:56

标签: javascript date

我想要一个带有按钮的输入字段。

在输入字段中,我将输入如下日期: 2011-07-08

当我按下按钮时,它应该读取输入字段中输入的时间并将其减去3个月和一天。

这可能吗?

提前致谢

4 个答案:

答案 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):

  1. 从字符串中提取年份,蛾和日(使用正则表达式或按' - '分割)
  2. 使用该数据建立新的Date对象
  3. 减去日期间隔
  4. 构建字符串

答案 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);