Reputation: 13
I am trying to create a date object that is 90 days from a specified date for use in a date comparison, but am not getting the correct dates. I have isolated my problem to the code shown below.
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
The above is resulting in:
beforeMyDate: Fri Dec 23 2011 08:46:18 GMT-0800 (Pacific Standard Time)
myDate: Tue Nov 22 2011 08:46:18 GMT-0800 (Pacific Standard Time)
afterMyDate: Wed Jun 20 2012 08:46:18 GMT-0700 (Pacific Daylight Time)
Here's a fiddle: http://jsfiddle.net/LnmpR/9/
Any help would be appreciated. Thanks.
Upvotes: 1
Views: 140
Reputation: 348992
You have to pass the same base time to the beforeMyDate
and afterMyDate
Date
instances. Currently, you're adding/removing 90 days of the current date (new Date()
without parameters returns the current time).
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
The values of beforeNow
and afterNow
might also be off by a few milliseconds, because all of them are new, parameterless instances of the Date
object.
Upvotes: 1