问题
I am trying to compare two different dates to see if the date inputted is after 7 days of todays date. I have done a bit of googling and come up with this:
function val_date(input){
var date = new Date(input);
date = date.getTime() / 1000;
var timestamp = new Date().getTime() + (7 * 24 * 60 * 60 * 1000)
window.alert("Date: "+date + " = N_Date: "+timestamp);
if(timestamp > date || timestamp === date){
// The selected time is less than 7 days from now
return false;
}
else if(timestamp < date){
// The selected time is more than 7 days from now
return true;
}
else{
// -Exact- same timestamps.
return false;
}
}
I am using an alert so that I can check my progress to make sure the dates are different. The output of the alert just says:
Date: NaN = N_Date = 13255772630 (<- or something like that).
Is there something I am doing wrong here?
Not sure if it helps but my date format is DD-MM-YYYY
回答1:
If you are comparing dates and don't want to include time, you can use something like:
// dateString is format DD-MM-YYYY
function isMoreThan7DaysHence(dateString) {
// Turn string into a date object at 00:00:00
var t = dateString.split('-');
var d0 = new Date(t[2], --t[1], t[0]);
// Create a date for 7 days hence at 00:00:00
var d1 = new Date();
d1.setHours(0, 0, 0, 0);
d1.setDate(d1.getDate() + 7);
return d0 >= d1;
}
Note that the hours for today's date must be zeroed.
回答2:
Date: NaN
Because string which you are passing to date creation is not possible to create Date
Try
fiddle Demo
Date.prototype.addDays = function (days) {
this.setDate(this.getDate() + days);
return this;
};
function val_date(input) {
var inputDate = new Date(input);
var dateWeek = new Date().addDays(7);
console.log(inputDate, dateWeek);
if (inputDate < dateWeek) {
// The selected time is less than 7 days from now
return false;
} else {
// The selected time is more than 7 days from now
return true;
}
}
回答3:
Using moment.js:
moment([2013, 2, 29]).fromNow();
回答4:
This is pretty common and if you will be manipulating dates you might want to use a Javascript library for this. There is an excellent on called moment.js
Using this you would do something like:
moment().add('days', 7)
To find a week in the future.
回答5:
Assuming that input is a valid Javascript Date object, you could perhaps try:
function dateDifference(oldDate) {
var currentDate = new Date();
var difference = currentDate - oldDate; //unit: milliseconds
var numDays = 7;
var threshHoldTime = numDays * (24 * 60 * 60 * 1000); //seven days in milliseconds
if (difference > threshHoldTime ) {
console.log("The difference is greateer then then 7 days");
}
else {
console.log("the date is not enough: " + difference);
}
}
回答6:
Try like this
var date = new Date(input).getTime(); // Get the milliseconds
var today = new Date();
//You can't compare date,
//so convert them to milliseconds
today = new Date(today.setDate(today.getDate() + 7)).getTime();
if (inputDate < today) {
// The selected time is less than 7 days from now
return false;
} else if{ ()
// -Exact- same timestamps.
return false;
}
else {
// The selected time is more than 7 days from now
return true;
}
来源:https://stackoverflow.com/questions/20162435/javascript-compare-two-dates-to-get-a-difference