有上千个关于日期的主题,以及在 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
),然后查看另一个给定日期(在大多数情况下为“今天”)是否是 自 d 起的 n 天
。
我尝试过...
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));
我收到错误
present has no function 'daysTo'
最佳答案
我认为问题在于您已将 daysTo()
函数定义为 Date 对象的方法,但您试图在字符串上调用它。
也就是说,varpresent = new Date().toUTCString();
导致present
是一个字符串,因为toUTCString()
返回一个字符串。
我会在调用toUTCString()
之前完成所有日期算术,例如:
var past = new Date(2011,7,1);
var present = new Date();
alert(present.daysTo(past));
仅在存储(并可能显示)日期时调用 toUTCString()
。
另外,不知道这是否是一个选项,具体取决于您存储它的方式,但您可能希望将其存储为 Date 对象,而不是字符串。
关于javascript - 当前日期是自给定日期以来的 x 天吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120952/