2011-08-19 67 views
0

有约1000个日期的主题,以及它们在javascript中使用的烦人程度。下面是我用来获取到我在点了几..javascript - 自给定日期起的当前日期x天?

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)); 
}; 

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

现在然后,该日期是保住了,每个人都有一个派对,有鸡翅等

我想以后获取的日期,它是如何获取的,也无关紧要。假设它是'd'。现在这个部分应该过于简单了,我已经在C#中做了5亿次,但是对于天堂而言,我只知道我为什么要在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”

回答

2

我认为问题是,你所定义的daysTo()功能Date对象的方法,但你正试图在一个字符串上调用它。

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

我会做所有的日期计算,呼吁toUTCString(),像以前一样:

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

alert(present.daysTo(past)); 

存放时(也可能显示)的日期只有打电话toUTCString()

此外,不知道这是否是一个选项,具体取决于您如何存储它,但您可能希望将其存储为Date对象而不是字符串。

+0

Hrnm。所以我如何获得UTC日期/时间作为日期而不是字符串? – Ciel

+1

var storedDateString = {从存储中拉出utc日期字符串}; \ n var storedDate = new Date(storedDateString); –

+0

呃 - 不知道如何在那里得到一个换行符... :-(...当我的大脑醒来时忽略'\ n' –

相关问题