Javascript 比较时间不起作用
Javascript Comparing Time not working
我正在尝试检查特定的 ISO 日期时间是否早于 18:00
这是简单的代码:
// Define the date I want to check
var targetDate = "2015-02-04T13:30:00Z";
// Parse the string into a date object
var target = new Date.parse(targetDate);
// Compare the target date againt a new date object set to 18:00:00
if(target < new Date().setHours(18 , 0, 0)){
console.log("BEFORE");
} else {
console.log("AFTER");
}
即使我的 targetDate 中的时间设置为 13:30:00,输出始终在之后。
我搜索了如何比较时间,从我发现的结果来看,我所做的简单比较应该可行。
如果有人能指出我做错了什么,我将不胜感激。
测试代码出现以下错误:
Uncaught TypeError: function parse() { [native code] } is not a constructor
这是因为 "new" 关键字。删除它可以解决您的问题:
// Define the date I want to check
var targetDate = "2015-02-04T19:30:00Z";
// Parse the string into a date object
var target = Date.parse(targetDate);
// Compare the target date againt a new date object set to 18:00:00
if (target < new Date().setHours(18, 0, 0)) {
console.log("BEFORE");
} else {
console.log("AFTER");
}
当您尝试解析目标数据时,您不必使用 new
关键字。
代码:
// Define the date I want to check
var targetDate = "2015-02-04T13:30:00Z";
// Parse the string into a date object
var target = Date.parse(targetDate);
// Compare the target date againt a new date object set to 18:00:00
if (target < new Date().setHours(18, 0, 0)) {
alert("BEFORE");
} else {
alert("AFTER");
}
尝试:
var targetDate = new Date("2015-02-04T13:30:00Z");
var numHours = targetDate.getHours();
if (numHours < 18) {
console.log("BEFORE");
} else {
console.log("AFTER");
}
如果您可以依赖 ISO 格式并且不想将其转换为当地时间
你可以只看小时子字符串。
var targetDate = "2015-02-04T13:30:00Z";
var isbefore18=targetDate.substring(11,13)-18<0;
isbefore18 /* value: (Boolean) true */
David P 的答案是正确的。 Date() 由日期部分和时间部分组成
new Date().setHours(18,0,0)
在18:00今天创建一个日期,除非您有时间机器,否则它将始终大于 17:302015 年 2 月 4 日。
targetDate.getHours()
Returns时间部分的小时值,听起来你在找
我正在尝试检查特定的 ISO 日期时间是否早于 18:00
这是简单的代码:
// Define the date I want to check
var targetDate = "2015-02-04T13:30:00Z";
// Parse the string into a date object
var target = new Date.parse(targetDate);
// Compare the target date againt a new date object set to 18:00:00
if(target < new Date().setHours(18 , 0, 0)){
console.log("BEFORE");
} else {
console.log("AFTER");
}
即使我的 targetDate 中的时间设置为 13:30:00,输出始终在之后。
我搜索了如何比较时间,从我发现的结果来看,我所做的简单比较应该可行。
如果有人能指出我做错了什么,我将不胜感激。
测试代码出现以下错误:
Uncaught TypeError: function parse() { [native code] } is not a constructor
这是因为 "new" 关键字。删除它可以解决您的问题:
// Define the date I want to check
var targetDate = "2015-02-04T19:30:00Z";
// Parse the string into a date object
var target = Date.parse(targetDate);
// Compare the target date againt a new date object set to 18:00:00
if (target < new Date().setHours(18, 0, 0)) {
console.log("BEFORE");
} else {
console.log("AFTER");
}
当您尝试解析目标数据时,您不必使用 new
关键字。
代码:
// Define the date I want to check
var targetDate = "2015-02-04T13:30:00Z";
// Parse the string into a date object
var target = Date.parse(targetDate);
// Compare the target date againt a new date object set to 18:00:00
if (target < new Date().setHours(18, 0, 0)) {
alert("BEFORE");
} else {
alert("AFTER");
}
尝试:
var targetDate = new Date("2015-02-04T13:30:00Z");
var numHours = targetDate.getHours();
if (numHours < 18) {
console.log("BEFORE");
} else {
console.log("AFTER");
}
如果您可以依赖 ISO 格式并且不想将其转换为当地时间
你可以只看小时子字符串。
var targetDate = "2015-02-04T13:30:00Z";
var isbefore18=targetDate.substring(11,13)-18<0;
isbefore18 /* value: (Boolean) true */
David P 的答案是正确的。 Date() 由日期部分和时间部分组成
new Date().setHours(18,0,0)
在18:00今天创建一个日期,除非您有时间机器,否则它将始终大于 17:302015 年 2 月 4 日。
targetDate.getHours()
Returns时间部分的小时值,听起来你在找