2014-10-17 34 views
0

我正在编写一个JS页面,它从外部源抓取日历数据,将其导入多维数组并使用它来显示当前正在与他们的照片一起工作的人,电话号码等使用时间作为动态变量来比较值

现在我已经设置好了,以便页面每15分钟重新加载一次。我宁愿将这一切都动态地完成,以便当时钟敲击下午5点时,页面知道要更新,而不必等到触发15分钟刷新。

所有的工作时间都以24小时格式从其他日历中提取(所以下午5点是1700)。

这里是我是如何产生的电流的时间在日历的开始/结束时间进行比较:

//Get the current date and time 
var dateTime = new Date(); 
var month = dateTime.getMonth() + 1; 
var day = dateTime.getDate(); 
var dayOfWeek = dateTime.getDay(); 
var year = dateTime.getYear() + 1900; 
//converting hours and minutes to strings to form the 24h time 
var hours = dateTime.getHours().toString(); 
if (hours.length === 1) { 
    var hours = '0' + hours 
}; 
var minutes = dateTime.getMinutes().toString(); 
if (minutes.length === 1) { 
    var minutes = '0' + minutes 
}; 
var time = hours + minutes; 
//convert the 24h time into a number to read from later 
var timeNumber = parseInt(time); 

然后我用if语句的开始/结束时间从timeNumber进口进度比较以确定谁正在工作,推动这一到最终使用此代码显示在页面上的一组:

//figure out who is currently working and put them in the workingNow array 
var workingNow = []; 
for (i = 0; i < workingToday.length; i++){ 
    //convert time strings to numbers to compare 
    var startTime = parseInt(workingToday[i][7]); 
    var endTime = parseInt(workingToday[i][8]); 
    //compare start and end times with the current time and add those who are working to the new list 
    if(startTime < timeNumber && timeNumber < endTime){ 
     workingNow.push(workingToday[i]); 
    } 
}; 

我猜我刚才一直在试图找出如何让数据在这个比较阵列与当前时间事端g是动态的。这是可能的还是我需要以完全不同的方式去解决这个问题?

回答

1

你应该看看momentjs。这是一个非常好的库,可以处理各种时间和日期操作。

http://momentjs.com/

+0

谢谢!这对于减少我需要编写和简化这个过程所需的代码非常有帮助。一般来说,我对编程相对比较陌生,我想我只是试图围绕一个脚本来持续评估条件是否为真(即,如果数组的时间范围与当前时间匹配)并且动态重建页面而无需刷新和重新评估语句。我挖掘了一些代码来生成一个带有JS的动态时钟,但是使用if语句比在页面上吐出一个动态变量更复杂一些。 – Dan 2014-10-17 12:02:13

+0

我想你可以使用setInterval来以给定的时间间隔来评估语句。 https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setInterval – 2014-10-17 12:09:11

+0

提及时刻! – chazsolo 2014-10-17 13:02:27