我正在尝试创建一个距指定日期90天的日期对象,以便在日期比较中使用,但是没有得到正确的日期。我已将问题与以下代码隔离开来了。
var now = new Date();
var beforeNow = new Date();
var afterNow = new Date();
var myDate = new Date();
var beforeMyDate = new Date();
var afterMyDate = new Date();
beforeNow.setDate(now.getDate() - 90);
afterNow.setDate(now.getDate() + 90);
myDate.setFullYear(2011, 10, 22); // set to Nov 22, 2011
beforeMyDate.setDate(myDate.getDate() - 90); // set to 90 days before Nov 22, 2011
afterMyDate.setDate(myDate.getDate() + 90); // set to 90 days after Nov 22, 2011
上述结果是:
beforeMyDate :Fri Dec 23 2011 08:46:18 GMT-0800(太平洋标准时间)
myDate :2011年11月22日星期二08:46:18 GMT-0800(太平洋标准时间)
afterMyDate :Wed Jun 20 2012 08:46:18 GMT-0700(Pacific Daylight Time)
这是一个小提琴:http://jsfiddle.net/LnmpR/9/
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
您必须将相同的基准时间传递给beforeMyDate
和afterMyDate
Date
个实例。目前,您正在添加/删除当前日期的90天(new Date()
,不带参数返回当前时间)。
var now = new Date();
var beforeNow = new Date();
var afterNow = new Date();
var myDate = new Date();
var beforeMyDate;
var afterMyDate;
beforeNow.setDate(now.getDate() - 90);
afterNow.setDate(now.getDate() + 90);
myDate.setFullYear(2011, 10, 22); // set to Nov 22, 2011
beforeMyDate = new Date(myDate); // Set base to myDate
afterMyDate = new Date(myDate); // Set base to myDate
beforeMyDate.setDate(myDate.getDate() - 90); // set to 90 days before Nov 22, 2011
afterMyDate.setDate(myDate.getDate() + 90); // set to 90 days after Nov 22, 2011
beforeNow
和afterNow
的值也可能会消失几毫秒,因为它们都是Date
对象的新的无参数实例。