Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите, что не так? (https://javascript.ru/forum/misc/37402-podskazhite-chto-ne-tak.html)

Blavkhawk 18.04.2013 15:59

Подскажите, что не так?
 
Есть сайт: http://twzgame.ru/time
Взял с него скрипт:
function updateTime() {
	var now = new Date();

	var startHours = now.getUTCHours();
	var startMinutes = now.getUTCMinutes();
	var startSeconds = now.getUTCSeconds();

	var extraHours = Math.floor(startMinutes*6/60)+0;
	var extraMinutes = Math.floor(startSeconds*6/60);
	var extraSeconds = 0;

	var hours =   (startHours*6   + extraHours )%24;
	var minutes = (startMinutes*6 + extraMinutes)%60;
	var seconds = (startSeconds*6 + extraSeconds)%60;

	if (seconds < 0) {
		minutes--;
		seconds+= 60;
	}

	if (minutes < 0) {
		hours--;
		minutes+= 60;
	}

	if (hours < 0) {
		hours += 24;
	}

	return function() {
		//Update time
		if (++seconds == 60) {
			seconds = 0;
			minutes++;
		}

		if (minutes == 60) {
			minutes = 0;
			hours++;
		}

		if (hours == 24) {
			hours = 0;
		}

		self.postMessage([hours, minutes, seconds]);
	}
}

var updater = updateTime();

setInterval(updater, 166.667);


Переделал так:
function updateTime() {
	var now = new Date();

	var startHours = now.getUTCHours();
	var startMinutes = now.getUTCMinutes();
	var startSeconds = now.getUTCSeconds();

	var extraHours = Math.floor(startMinutes*6/60)+0;
	var extraMinutes = Math.floor(startSeconds*6/60);
	var extraSeconds = 0;

	var hours =   (startHours*6   + extraHours )%24;
	var minutes = (startMinutes*6 + extraMinutes)%60;
	var seconds = (startSeconds*6 + extraSeconds)%60;

	if (seconds < 0) {
		minutes--;
		seconds+= 60;
	}

	if (minutes < 0) {
		hours--;
		minutes+= 60;
	}

	if (hours < 0) {
		hours += 24;
	}

		//Update time
		if (++seconds == 60) {
			seconds = 0;
			minutes++;
		}

		if (minutes == 60) {
			minutes = 0;
			hours++;
		}

		if (hours == 24) {
			hours = 0;
		}

 WScript.Echo (hours + ':' + minutes + ':' + seconds);
}

var updater = updateTime();


Вопрос: Почему разные минуты и секунды на сайте и в Echo?

skrudjmakdak 18.04.2013 16:32

а хоть что он делает код то??

function updateTime() {
	var now = new Date();

	var startHours = now.getUTCHours();
	var startMinutes = now.getUTCMinutes();
	var startSeconds = now.getUTCSeconds();
	
	//------------------------
	console.log(startHours + ':' + startMinutes + ':' + startSeconds);
	
	var extraHours = Math.floor(startMinutes*6/60)+0;
	var extraMinutes = Math.floor(startSeconds*6/60);
	var extraSeconds = 0;
	
	//------------------------
	console.log(extraHours + ':' + extraMinutes + ':' + extraSeconds);
	
	var hours =   (startHours*6   + extraHours )%24;
	var minutes = (startMinutes*6 + extraMinutes)%60;
	var seconds = (startSeconds*6 + extraSeconds)%60;

	//------------------------
	console.log(hours + ':' + minutes + ':' + seconds);
	
	if (seconds < 0) {
		minutes--;
		seconds+= 60;
	}

	if (minutes < 0) {
		hours--;
		minutes+= 60;
	}

	if (hours < 0) {
		hours += 24;
	}

		//Update time
		if (++seconds == 60) {
			seconds = 0;
			minutes++;
		}

		if (minutes == 60) {
			minutes = 0;
			hours++;
		}

		if (hours == 24) {
			hours = 0;
		}

 console.log(hours + ':' + minutes + ':' + seconds);
}

setInterval(updateTime, 1000);

Blavkhawk 18.04.2013 16:36

Берет время в формате UTC и конвертит.
Проблема в том, что я вижу разные данные.
Результат скрипта не сходится с данными с сайта.

skrudjmakdak 18.04.2013 16:49

тогда для чего все это??))) я пострел на алгоритм и не понял для чего он нужен, к чему он должен привести.

вот набросал свое (может и не оно конечно, но все же):

var updateTime = function()
	{
	var date = new Date();
	var hours = date.getHours();
	var minutes = date.getMinutes();
	var seconds = date.getSeconds();
	console.log(hours + ':' + minutes + ':' + seconds);
	}

setInterval(updateTime, 1000);

Blavkhawk 18.04.2013 16:55

Это конвертор внутриигрового времени.
Скрипт берет время по гринвичу и конвертит в игровое время.
Собственно это и есть весь смысл скрипта.

Dim@ 18.04.2013 23:12

Blavkhawk,
вы делаете без интервала?

Dim@ 18.04.2013 23:13

И какова разница между минутами и секундами?

Blavkhawk 19.04.2013 08:06

Цитата:

Сообщение от Dim@ (Сообщение 247029)
Blavkhawk,
вы делаете без интервала?

При разовом запуске как мне кажется сути дела это не меняет.
Скрипт же получает данные о времени и конвартит его. Только однократно.

Blavkhawk 19.04.2013 08:08

Цитата:

Сообщение от Dim@ (Сообщение 247031)
И какова разница между минутами и секундами?

Проблема в том, кто она не постоянна.
Минуты плаваю в разнице где то от 45 секунд и до 30 минут.


Часовой пояс GMT +3, время: 13:59.