У меня есть код, который проверяет, попадает ли пользователь в определенное время (с 9:00 до 17:30) с понедельника по пятницу.Установите часовой пояс для GB для всех пользователей
function checkTime() {
var d = new Date(); // current time
var hours = d.getHours();
var mins = d.getMinutes();
var day = d.getDay();
return day >= 1
&& day <= 5
&& hours >= 9
&& (hours < 17 || hours === 17 && mins <= 30);
}
Это работает правильно, но проверяет время, основанное на времени браузера пользователей.
Что я хочу сделать, это проверить его 9:00 - 17:30 по английскому времени.
Итак, если вы просматриваете сайт/сценарий из Америки по адресу 10:00 (UTC-7), вы будете за пределами проверки времени, потому что это будет 18:00 (UTC + 1) по Великобритании.
Итак, я предполагаю, что я пытаюсь получить часовую зону пользователей, а затем конвертировать ее в Великобританию, а затем запустить сценарий checkTime()
?
Связанные: http://stackoverflow.com/questions/1091372/getting -The-клиенты-часовой пояс-в-JavaScript. Трудная часть оттуда будет знать время Великобритании, поскольку мы проводим летнее сбережение в течение года, поэтому разница в GMT может означать, что рассчитанное время вышло на 1 час. Я бы порекомендовал вам восстановить время Великобритании с сервера и проверить там вместо того, чтобы подделывать клиентское решение. Особенно, если вы полагаетесь на часы клиента, которые установлены правильно. –
@RoryMcCrossan: '+ new Date()' не зависит от DST и происходит, чтобы вернуть временную метку uk ... – dandavis
OP хочет знать время в Великобритании со дня клиента. Все, что вы можете получить, - это время в GMT (путем вычитания смещения временной зоны), тогда как в течение года Великобритания работает на BST (т.е. GMT + 1) –