javascript - 自给定日期起的当前日期x天?

时间:2011-08-19 11:34:41

标签: javascript

日期上有一千个主题,以及在javascript中使用它们有多烦人。以下是我曾经达到的一些观点......

javascript date + 7 days

add x days to given date

但它要么太早,我的大脑已经模糊,或者我只是在努力解决这里的一些逻辑问题。我创建了3个方法,或者函数而不是......

Date.prototype.daysTo = function(target) {
    var divisor = (1000 * 60 * 60 * 24);
    return (((this - target) / divisor));
};
Date.prototype.hoursTo = function(target) {
    var divisor = (1000 * 60 * 60);
    return (((this - target) / divisor));
};
Date.prototype.minutesTo = function(target) {
    var divisor = (1000 * 60);
    return (((this - target) / divisor));
};

我的基本目标是保存一个日期(使用Date()。toUTCString()),就像这个var d = new Date().toUTCString();一样,然后将它存储在某个地方(存储它的地方是无关紧要的)

现在,那个日​​期被保存,每个人都有派对,还有鸡翅等。

我想稍后获取日期,如何检索它也是无关紧要的。假设它是'd'。现在这是一个应该过于简单的部分,我已经在C#中完成了五十亿次,但是天堂只知道我在javascript中努力重复它的原因。

我想取一个整数(7),然后查看另一个给定日期(在大多数情况下,'今天')是否为n days since d

我试过......

var today = new Date().ToUTCString();

var result = today.daysTo(d);

我认为这会给我合适的价值,但我只是得到了奇怪的'未定义'值。

有人可以帮帮我吗?这应该是非常简单的,老实说,我不知道为什么我会为此苦苦挣扎,但无论出于何种原因,这都让我感到沮丧。我想我错过了一些非常明显的事情。

我们开始,这是一个更好的代码段。

Date.prototype.daysTo = function(target) {
    var divisor = (1000 * 60 * 60 * 24);
    return (((this - target) / divisor));
};
Date.prototype.hoursTo = function(target) {
    var divisor = (1000 * 60 * 60);
    return (((this - target) / divisor));
};
Date.prototype.minutesTo = function(target) {
    var divisor = (1000 * 60);
    return (((this - target) / divisor));
};

var past = new Date(2011,7,1).toUTCString();
var present = new Date().toUTCString();

alert(present.daysTo(past));

我收到错误

  

目前没有'daysTo'功能

1 个答案:

答案 0 :(得分:2)

我认为问题在于您已将daysTo()函数定义为Date对象的方法,但您尝试在字符串上调用它。

也就是说,var present = new Date().toUTCString();会导致present成为字符串,因为toUTCString()会返回一个字符串。

我会在调用toUTCString()之前完成所有Date算术,例如:

var past = new Date(2011,7,1);
var present = new Date();

alert(present.daysTo(past));

仅在存储(并可能显示)日期时调用toUTCString()

此外,根据您的存储方式,不知道这是否是一个选项,但您可能希望将其存储为Date对象,而不是字符串。