无法根据时间打印消息
Cannot print message according to time
我有三个不同的时间,其中两个是字符串形式(time1
和time2
),一个来自系统日期currDate
。下一步,根据上面两次中的一次,我想在系统日期到达其中一次时打印消息。为此,我有function callEachMinute
,它每分钟调用一次以获取系统时间(但在代码中我没有包括整个过程)。以下是代码的当前状态:
脚本:
function callEachMinute() {
var currDate = new Date();
var time_1 = '8:30';
var time_2 = '23:00';
timeComparison(currDate, time_1, time_2)
}
function timeComparison(currTime, time1, time2) {
// Time 1 formatting
var t1 = new Date();
var parts1 = time1.split(":");
t1.setHours(parts1[0],parts1[1]);
// Iftor-Time formatting
var t2 = new Date();
var parts2 = timeI.split(":");
t2.setHours(parts2[0],parts2[1]);
/* Notification procedure */
if (currTime == t1) {
// Message for Time1
alert("Time 1 is reached");
}
if (currTime == t2) {
// Message for Time2
alert("Time 2 is reached");
}
}
问题:当系统时间达到其中一次(时间1或时间2)时,不会发生任何事情。这个问题有什么解决办法吗?
这里有一些问题。
您设置了一个Date
对象,然后希望将其与currTime
:进行比较
if (currTime == t1) {
Untunatley Javascript的==
运算符在应用于对象时会比较两个对象,以查看它们是否是对同一对象的引用,因此即使currTime和t1在同一时间包含,由于它们是不同的实例,该检查也会评估为false。您可以通过转换为字符串来实现这一点:
if (currTime.toString() == t1.toString) {
如果每个数据的字符串表示结果相同,这将起作用。
然而,一个更直接的方法可能是用另一种方法来解决这个问题——从currTime中提取小时和分钟,构建一个字符串,并将其与您的时间字符串进行比较。类似于:
// in timecomparison function
var hrs = currTime.getHours();
var mins = currTime.getMinutes();
var now = hrs+":"+mins
// now do comparisons
if (now == time1 ) {
....
}
等等。
相关文章:
- 如何在服务器控制台上打印前端日志消息
- 尝试从对象打印出响应消息
- page.evaluate() 未打印控制台消息
- 使用javascript在HTML的输出窗口中打印控制台消息
- 返回 false 不会停止刷新页面,并且不打印错误消息
- JSON 响应打印 HTML 而不是消息
- 从javascript打印或回显html页面中的消息
- 有没有其他方法可以在不对 javascript 中的内容进行换行的情况下打印出调试消息
- 如何在控制台中打印来自在 gulp-run 中执行的进程的消息
- 删除消息选择打印机并使用javascript自动打印文档
- 从父对象内部的相邻对象打印对象会导致'未定义'消息
- 为什么我'我无法在AJAX响应中打印错误消息
- 如何在async nodejs中完成所有流程并打印出消息
- 无法根据时间打印消息
- 如何打印带有标签的HTML消息
- 在指定的函数中不打印Javascript控制台消息
- 试图打印消息在我的无序列表框jQuery
- 在打印的JavaScript代码中隐藏消息(待查找)
- 在 expect() 断言失败时打印消息
- 如何使用try, catch在错误处理中打印消息