日期上有一千个主题,以及在javascript中使用它们有多烦人。以下是我曾经达到的一些观点......
但它要么太早,我的大脑已经模糊,或者我只是在努力解决这里的一些逻辑问题。我创建了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'功能
答案 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对象,而不是字符串。