Javascript比较两个日期以获得差异
我试图比较两个不同的日期,看看输入的日期是否在今天的7天后。我用谷歌搜索了一下,得出了以下结论:Javascript比较两个日期以获得差异,javascript,date,timestamp,compare,Javascript,Date,Timestamp,Compare,我试图比较两个不同的日期,看看输入的日期是否在今天的7天后。我用谷歌搜索了一下,得出了以下结论: 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_D
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;
}
}
函数值日期(输入){
var日期=新日期(输入);
date=date.getTime()/1000;
var timestamp=new Date().getTime()+(7*24*60*60*1000)
window.alert(“日期:+Date+”=N_日期:+timestamp);
如果(时间戳>日期| |时间戳===日期){
//所选时间从现在起少于7天
返回false;
}
else if(时间戳<日期){
//所选时间是从现在起7天以上
返回true;
}
否则{
//-精确-相同的时间戳。
返回false;
}
}
我正在使用警报,以便检查我的进度,以确保日期不同。警报的输出只是说:
日期:NaN=N_日期=13255772630(使用:
使用:
日期:
NaN
,因为传递给日期创建的字符串无法创建日期
试一试
Date.prototype.addDays=函数(天){
this.setDate(this.getDate()+天);
归还这个;
};
函数val_日期(输入){
var inputDate=新日期(输入);
var dateWeek=新日期().addDays(7);
日志(inputDate,dateWeek);
如果(输入日期<日期周){
//所选时间从现在起少于7天
返回false;
}否则{
//所选时间是从现在起7天以上
返回true;
}
}
日期:NaN
因为您传递给日期创建的字符串无法创建日期
试一试
Date.prototype.addDays=函数(天){
this.setDate(this.getDate()+天);
归还这个;
};
函数val_日期(输入){
var inputDate=新日期(输入);
var dateWeek=新日期().addDays(7);
日志(inputDate,dateWeek);
如果(输入日期<日期周){
//所选时间从现在起少于7天
返回false;
}否则{
//所选时间是从现在起7天以上
返回true;
}
}
这是非常常见的,如果您要处理日期,您可能需要使用Javascript库来实现这一点
使用此选项,您可以执行以下操作:
// 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;
}
力矩()。添加('天',7)
找到未来的一周。这是很常见的,如果你要处理日期,你可能需要使用Javascript库。有一个很好的 使用此选项,您可以执行以下操作:
// 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;
}
力矩()。添加('天',7)
如果输入是有效的Javascript日期对象,您可以尝试:
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);
}
}
假设输入是有效的Javascript日期对象,您可以尝试:
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);
}
}
像这样试试
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;
}
var date=new date(input).getTime();//获取毫秒数
var today=新日期();
//你不能比较日期,
//所以把它们转换成毫秒
today=新日期(today.setDate(today.getDate()+7)).getTime();
如果(输入日期<今天){
//所选时间从现在起少于7天
返回false;
}如果{()
//-精确-相同的时间戳。
返回false;
}
否则{
//所选时间是从现在起7天以上
返回true;
}
像这样试试
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;
}
var date=new date(input).getTime();//获取毫秒数
var today=新日期();
//你不能比较日期,
//所以把它们转换成毫秒
today=新日期(today.setDate(today.getDate()+7)).getTime();
如果(输入日期<今天){
//所选时间从现在起少于7天
返回false;
}如果{()
//-精确-相同的时间戳。
返回false;
}
否则{
//所选时间是从现在起7天以上
返回true;
}
如果您正在比较日期,但不想包括时间,可以使用以下方法:
// 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;
}
请注意,今天日期的小时数必须归零。如果要比较日期而不想包括时间,可以使用以下方法:
// 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;
}
请注意,今天日期的小时数必须归零。“…警报只显示:date:NaN”这告诉您,
输入的,无论它是什么,都是一个字符串,无法由日期
构造函数解析。调用新日期的结果(“一些无效字符串”)
是一个日期
,其时间编号为NaN
。输入的值是什么?您的日期格式是什么?我的日期格式是DD-MM-YYYY“…警报只是说:Date:NaN”这告诉您输入
,无论它是什么,都是一个无法被日期
构造函数解析的字符串。调用新日期的结果(“某些无效字符串”)
是一个日期
,其时间编号为NaN
。输入值是什么?日期格式是什么?我的日期格式是DD-MM-yyyyy OP的字符串格式是DD-MM-YYYY,大多数浏览器日期构造函数都不会正确解析该格式。日期字符串应手动解析。创建的日期将在0:00:00,但dateWeek将为0:00在当前时间,so将在第7天返回false,此时它应返回true。OP的字符串格式为DD-MM-YYYY,大多数浏览器日期构造函数将无法正确解析。日期字符串应手动解析。创建的日期将在0:00:00,但dateWeek将在当前时间返回false,因此,当它应该返回true。输入是字符串,而不是日期对象。输入是字符串,而不是日期对象。输入是日期构造函数无法正确解析的字符串(如OP中所述)。日期对象可以直接比较。@RobG比较日期对象不起作用,请检查是否正确wrong@RobGvar日期=新日期(“2013年12月12日“;
仅在chrome浏览器中工作,但在其他浏览器中失败。我之前没有注意到这一点,所以我发布了答案。好的,您不能使用