【问题标题】:Javascript Time issue doesn't think that I am between a startTime and an endTimeJavascript 时间问题不认为我在 startTime 和 endTime 之间
【发布时间】:2016-03-30 03:36:47
【问题描述】:

幸运的是,.js 文件和 .vbs 文件启动时没有出现错误。但是,出于某种奇怪的原因,执行结束时总是相信我不在两次之间。请记住,我现在所在的时间是 22 点,那么是什么阻止了我呢? 这是代码:

var d = new Date();
var n = d.getHours();
var timeEnd = d.setHours(23);
var timeStart = d.setHours(0);
var oShell = new ActiveXObject("Shell.Application"); 
var commandtoRun = "C:\\Users\\100046908\\Desktop\\Letsgo.vbs";

if(n < timeEnd && n > timeStart){
var r = confirm("Press a button");
if (r = true) {
x = "You pressed OK!";
_system.shutDown();
} else {
x = "You pressed Cancel!";
die;
}
}
 else { 
oShell.ShellExecute(commandtoRun,"","","open","1");
}

提前致谢。

【问题讨论】:

  • getHours 的返回是日期的当前小时(从 0 到 23 包括在内),setHours 的返回是一个时间值自纪元以来的毫秒数,一个非常非常大的数字。所以 n 总是小于 timeEndtimeStart。试试n = +d,让它代表当前时间值。

标签: javascript time


【解决方案1】:

nd.getHours() 的返回值。它是一个自然数,小于 24。另一方面,你有这样的初始化:

var timeEnd = d.setHours(23);
var timeStart = d.setHours(0);

因为 d.setHours 返回日期的数字表示,所以像 1459370582692、n 这样的值永远不会介于 timeStarttimeEnd 之间。您可能想这样做:

var timeEnd = 23;
var timeStart = 0;

【讨论】:

  • n = d.getTime()。 ;-)
猜你喜欢
  • 2018-11-02
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
相关资源
最近更新 更多