Получить время по москве.
Нужно просто время часы:минуты:секунды.
var date = Date.now() var str = date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() А как пользоваться getTimezoneOffset() не понятно... Я так понял возвращает смещение в минутах от GMT +0 Просто отнять getTimezoneOffset(* 60000) от date? Чтобы получить 0й пояс, а потом московский прибавить... |
Нашел setUTCHours, работает она неправильно как-то...
var date = new Date() alert(date) date.setUTCHours(14) alert(date) |
|
А как сделать проще вот это:
Просто мне нужно корректировку сделать в 3 секунды, а new Date я не знаю что это за хрень. У setHours 3м параметром секунды идут, но их получить нужно, чтобы установить, да и вообще неудобная и непонятная хрень. Выводит в алерте: Цитата:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script type="text/javascript"> var h // Элемент с часами function componentToHex(c) // Перевести число(байт) в HEX { var hex = c.toString(16); return hex.length == 1 ? "0" + hex : hex; } function rgbToHex(r, g, b) // Вернет RGB в строке { return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); } function time(utc) // Получает локальное время с переводом часового пояса { var d = new Date() d.setHours(d.getHours() + utc, d.getMinutes() + d.getTimezoneOffset()) return d.toTimeString().substring(0, 8) } function update_hours() // Обновить время в элементе { var t = time(3) h.innerHTML = ' ' + t + ' ' var s = parseInt(t[6] + t[7], 10) var rgb = [0, 0, 0] if(s < 30) { rgb[0] = 127 + Math.round(s * 4.25) rgb[1] = 255 } else { rgb[0] = 255 rgb[1] = 255 - (Math.round(s * 4.25) - 127) } var col = rgbToHex(rgb[0], rgb[1], rgb[2]) h.style.color = col } function main() // Стартовая функция { var b = document.querySelector('body') h = document.createElement('block') h.style.backgroundColor = '#000000' b.appendChild(h) update_hours() setInterval(update_hours, 1000) } document.addEventListener('DOMContentLoaded', main) </script> </head> <body></body> </html> |
Всё, вроде сделал, ну будет немножко время расходиться, зато не жрет так, как предыдущий...
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script type="text/javascript"> var e, sec = 0 // Элемент с часами, секунды function DecToHex(c) // Перевести число(байт) в HEX { var hex = c.toString(16) return hex.length == 1 ? "0" + hex : hex } function update_hours() // Обновить время в элементе { var h = (sec % 86400) / 3600 ^ 0 // Получить часы (остаток от деления на сутки - чтобы не было 25 часов) var m = (sec % 3600) / 60 ^ 0 // Получить минуты var s = sec % 60 // Получить секунды sec++ // Считать секунды e.innerHTML = ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s) + ' ' var rg = [0, 0] // Массив для красного и зеленого цвета if(s < 30) rg = [127 + Math.round(s * 4.25), 255] // До 30 секунд медленно из зеленого в желтый else if(s < 50) rg = [255, 255 - (Math.round(s * 4.25) - 127)] // До 50 из желтого в оранжевый else rg = [255, 170 - (Math.round(s * 17) - 850)] // До 59 из оранжевого в красный var col = "#" + DecToHex(rg[0]) + DecToHex(rg[1]) + '00' // Форматирование цвета e.style.color = col // Задать цвет текста элементу } function main() // Стартовая функция { var b = document.querySelector('body') // Найти элемент body e = document.createElement('block') // Создать элемент e.style.backgroundColor = '#000000' // Задать цвет фона элементу b.appendChild(e) // Вставить элемент в body var t = new Date() // Получить 1 раз локальное время для UTC +00 var h = t.getUTCHours() var m = t.getUTCMinutes() var s = t.getUTCSeconds() // Перевести всё в секунды, и прибавить нужный часовой пояс, и скорректировать секунды sec = ((h * 3600) + (m * 60) + s) + ((3 * 3600) - 4) update_hours() // Сразу отобразить setInterval(update_hours, 1000) // И каждую секунду } document.addEventListener('DOMContentLoaded', main) </script> </head> <body></body> </html> |
Часовой пояс GMT +3, время: 19:40. |