Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2014, 20:35
Аспирант
Отправить личное сообщение для dasser Посмотреть профиль Найти все сообщения от dasser
 
Регистрация: 17.06.2014
Сообщений: 56

разница секунд в Unix
Добрый вечер!
делаю небольшой секундомер с рассчетом разницы секунд текущего времени и заданой датой в Unix-формате.

<?php
$ltime = date (Y,n,d,H,i,s, 1408370664);
?>
<script type="text/javascript">
var clock;
$(document).ready(function() {
var currentDate = new Date(); // var currentDate = new Date();
var pastDate  = new Date("<? echo $ltime ?>"); 
var diff = currentDate.getTime() / 1000 - pastDate.getTime() / 1000;
clock = $('.clock').FlipClock(diff, {
clockFace: 'DailyCounter'
});
});
</script>

что я делаю не так ?
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2014, 21:39
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Не обязательно форматировать дату, достаточно передать timestamp:

<?php
// js timestamp — в миллисекундах, PHP — в секундах.
$ltime = 1408370664 * 1000;
?>
<script type="text/javascript">
	$(document).ready(function() {
		var currentDate = new Date();
		var pastDate = new Date("<? echo $ltime ?>"); 
// Невалидная дата при приведении к числу отдает NaN
		if (!isNaN(pastDate)) {
			var diff = currentDate - pastDate;
			window.clock = $('.clock').FlipClock(diff, { clockFace: 'DailyCounter' });
		}
	});
</script>

Последний раз редактировалось ixth, 19.08.2014 в 21:41.
Ответить с цитированием
  #3 (permalink)  
Старый 20.08.2014, 01:05
Аспирант
Отправить личное сообщение для dasser Посмотреть профиль Найти все сообщения от dasser
 
Регистрация: 17.06.2014
Сообщений: 56

ixth,
все привел к примеру, но выдает ошибку фун-ции в 10 стр, именно на "!". может допскрипт (compiled/flipclock.js) его корявит, переделываю с flipclockjs . com
Ответить с цитированием
  #4 (permalink)  
Старый 20.08.2014, 10:22
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Сообщение от Rise Посмотреть сообщение
dasser, а вы в курсе что дата клиента может сильно отличаться от даты сервера как в плюс так и в минус в связи с наличием временных зон? Вы уж тогда и текущую дату берите с сервера, а не с клиента:
Timestamp у дат с разными таймзонами одинаковый.
Ответить с цитированием
  #5 (permalink)  
Старый 20.08.2014, 10:59
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Но если я сменю часовой пояс, timestamp не изменится.
Ответить с цитированием
  #6 (permalink)  
Старый 20.08.2014, 11:02
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

var utc = new Date('Wed Aug 20 2014 12:00:00 UTC').getTime();
var msk = new Date('Wed Aug 20 2014 16:00:00 GMT+0400 (MSK)').getTime();
alert(utc + '\n' + msk);
Ответить с цитированием
  #7 (permalink)  
Старый 20.08.2014, 12:32
Аспирант
Отправить личное сообщение для dasser Посмотреть профиль Найти все сообщения от dasser
 
Регистрация: 17.06.2014
Сообщений: 56

Rise,
Сообщение от Rise
dasser, а вы в курсе что дата клиента может сильно отличаться от даты сервера как в плюс так и в минус в связи с наличием временных зон? Вы уж тогда и текущую дату берите с сервера, а не с клиента:
этот вариант не работает.
проблема скорее всего из-за NaN.
<?
$ltime = 1408370664 * 1000; 
>  
<script type="text/javascript">
var clock;
$(document).ready(function() {
var currentDate = new Date(); 
var pastDate  = new Date("<? echo $ltime ?>"); 
var diff = currentDate.getTime() / 1000 - pastDate.getTime() / 1000;
clock = $('.clock').FlipClock(diff, {
clockFace: 'DailyCounter'
});
alert(diff + '\n' + pastDate + '\n' + currentDate + '\n' );
});
</script>

Если ставить в 8 строку Unix в милисекундах - работает, но заданое время должно браться из переменной посредством php (как в примере выше, но он не работатет). Танец с бубном
Сообщение от ixth
// Невалидная дата при приведении к числу отдает NaN

if (!isNaN(pastDate)) {
var diff = currentDate - pastDate;
window.clock = $('.clock').FlipClock(diff, { clockFace: 'DailyCounter' });
}
не дает еффекта, возможно из-за синтаксиса (ИМХО)
Ответить с цитированием
  #8 (permalink)  
Старый 20.08.2014, 13:19
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Убери кавычки вокруг ltime. Date пытается парсить строку, а не timestamp.
Ответить с цитированием
  #9 (permalink)  
Старый 20.08.2014, 13:48
Аспирант
Отправить личное сообщение для dasser Посмотреть профиль Найти все сообщения от dasser
 
Регистрация: 17.06.2014
Сообщений: 56

ixth,
Сообщение от ixth
Убери кавычки вокруг ltime. Date пытается парсить строку, а не timestamp.
не работает даже alert
Ответить с цитированием
  #10 (permalink)  
Старый 20.08.2014, 14:31
Аспирант
Отправить личное сообщение для dasser Посмотреть профиль Найти все сообщения от dasser
 
Регистрация: 17.06.2014
Сообщений: 56

Rise,
суть в том что переменная посредством php береться из БД, а в БД естественно она в unix, так как этот формат исплользуэться в осоновном обработчике. Проблема в том что я JS не знаю, пытаюсь учиться, перепиливая готовые решения.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчета UNIX time TuxShot Общие вопросы Javascript 6 03.08.2014 13:36
Счетчик обратного времени (эпоха unix) skillful AJAX и COMET 0 07.07.2014 17:09
Скобки после имени функции. В чем разница, если они есть и если их нет? jsuse Общие вопросы Javascript 2 19.11.2011 16:11
Смена картинки по наведению курсора мыши 5 секунд MironM Общие вопросы Javascript 22 27.09.2011 16:39
разница часовых поясов в минутах Artyomii Общие вопросы Javascript 3 11.05.2011 08:50