我正在为一个小型企业网站开展一个小项目,我找到了一个有用的脚本教程。脚本将显示一个打开或关闭的标志,具体取决于我改变了几件事的当前时间,但现在它的工作正常,除了一件小事......
他们使用的时间设置是错误的。我住在荷兰,这里的时区是UTC + 1。 javascript正在使用UTC。
这是代码
localTime=new Date();
utc1Time=new Date(localTime.getTime() + (localTime.getTimezoneOffset() + 120) * 60000);
hours=utc1Time.getHours();
minutes=utc1Time.getMinutes();
today=utc1Time.getDay();
现在我想知道代码应该是什么来获得正确的时区。 而且你知道,我是Javascript的新手。提前谢谢!
编辑:
这是我如何使用时间的示例,因此显示不同的符号
if (today==6) {
if (hours>=1&&minutes>=4) {
if (hours<=23&&minutes<=30) {document.write(statusopen);
}
else {document.write(statusclosed);
}
}
else {document.write(statusclosed);
}
}
答案 0 :(得分:0)
如果您希望某个功能告诉您当前时间是否在可用时间范围内,您可以尝试以下方法。
var hoursOfOperation = [
[ [8, 15], [17, 30] ], // Sunday
[ [8, 15], [17, 30] ], // Monday
[ [8, 15], [17, 30] ], // Tuesday
[ [8, 15], [17, 30] ], // Wednesday
[ [8, 15], [17, 30] ], // Thursday
[ [8, 15], [17, 30] ], // Friday
[ [8, 15], [17, 30] ] // Saturday
];
var date = new Date();
var timezone_EST = -300;
var open = isOpen(hoursOfOperation, date, timezone_EST);
document.body.innerHTML = open ? 'OPEN' : 'CLOSED';
function isOpen(hoursOfOperation, date, timezoneOffset) {
var hasOffset = timezoneOffset !== undefined;
var hour = hasOffset ? date.getUTCHours() : date.getHours();
var minute = hasOffset ? date.getUTCMinutes() : date.getMinutes();
var day = hasOffset ? date.getUTCDay() : date.getDay();;
var offsetHours = hasOffset ? Math.floor(timezoneOffset / 60) : 0;
var offsetMinutes = hasOffset ? timezoneOffset % 60 : 0;
var incrementHour = 0;
var incrementDay = 0;
if (offsetMinutes != 0) {
incrementHour = minute + offsetMinutes > 60 ? 1 : minute + offsetMinutes < 0 ? -1 : 1;
minute = mod(minute + offsetMinutes, 60);
}
if (offsetHours != 0) {
incrementDay = hour + offsetHours > 24 ? 1 : hour + offsetHours < 0 ? -1 : 1;
hour = mod(hour + offsetHours, 24);
}
day = mod(day + incrementDay, 7);
console.log(day, hour, minute);
return (function(dayOfWeek) {
var minTime = dayOfWeek[0];
var minHour = minTime[0];
var minMinute = minTime[1];
if (hour < minHour) return false;
if (hour === minHour && minute < minMinute) return false;
var maxTime = dayOfWeek[1];
var maxHour = maxTime[0];
var maxMinute = maxTime[1];
if (hour > maxHour) return false;
if (hour === maxHour && minute > maxMinute) return false;
return true;
}(hoursOfOperation[day]))
}
function mod(n, m) {
return ((n % m) + m) % m;
}