Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить время по москве. (https://javascript.ru/forum/misc/66753-poluchit-vremya-po-moskve.html)

Артист 08.01.2017 17:16

Получить время по москве.
 
Нужно просто время часы:минуты:секунды.

var date = Date.now()
var str = date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds()


А как пользоваться getTimezoneOffset() не понятно...
Я так понял возвращает смещение в минутах от GMT +0

Просто отнять getTimezoneOffset(* 60000) от date?
Чтобы получить 0й пояс, а потом московский прибавить...

Артист 08.01.2017 17:41

Нашел setUTCHours, работает она неправильно как-то...

var date = new Date()

alert(date)

date.setUTCHours(14)

alert(date)

рони 08.01.2017 17:54

Артист,
http://javascript.ru/forum/misc/3065...tml#post410922

Артист 12.01.2017 11:19

А как сделать проще вот это:
Просто мне нужно корректировку сделать в 3 секунды, а new Date я не знаю что это за хрень.
У setHours 3м параметром секунды идут, но их получить нужно, чтобы установить, да и вообще неудобная и непонятная хрень.
Выводит в алерте:
Цитата:

Thu Jan 12 2017 12:20:18 GMT+0400 (RTZ 3 (зима))
Нет ли просто функции, которая вернёт количество в секундах(не с 70го года а с начала суток)?

<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 = '&nbsp' + t + '&nbsp'

				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>

Артист 12.01.2017 18:07

Всё, вроде сделал, ну будет немножко время расходиться, зато не жрет так, как предыдущий...

<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 = '&nbsp' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s) + '&nbsp'

				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, время: 22:56.