2012-01-26 4 views
1

Это, вероятно, очень тривиально, но я не могу на всю жизнь найти хорошую документацию. У меня есть настройка событий AJAX, где мне нужно отправить временную метку с клиентской стороны на сервер. Серверный скрипт (PHP) проверяет отметку времени, в которой он был передан, против CURRENT_TIMESTAMP в таблице mysql и действует на результаты.Временная метка JavaScript для проверки на MySQL

Моя проблема в том, что мне нужно создать временную метку в JavaScript на странице клиента, которая будет сопоставима с меткой времени mysql.

ответ

1

Алекс чуть было это

Единственное, что плохого в том, что JS метки времени в миллисекундах и UNIX метки времени в секундах. Поэтому вам нужно разделить временную метку JS на 1000.

var unixNow = Math.round((new Date().getTime())/1000); 
+0

Спасибо за помощь, вы оба! – lampwins

+0

Черт, я перепутал с делением? Это то, что я получаю от работы в праздничные дни ... – alex

1

Как насчет отправки секунд от Эпохи из JavaScript ...

var secondsFromEpoch = ~~(+new Date/1000); 

..и затем изменить запрос на ...

WHERE UNIX_TIMESTAMP(`datetime`) == :secondsFromEpoch_passed_from_JavaScript 

?

+0

Спасибо за помощь! – lampwins

+0

Некоторые объяснения сложного JS AX здесь. '+ new Date' совпадает с' new Date(). getTime() '' '+' преобразует дату в число. '~~' - это еще один способ реализовать 'Math.round()', я слышал, что он еще быстрее –

+0

@JuanMendes Спасибо за объяснение. Однако '+' вызывает 'Date'' значениеOf() ', который возвращает' Number'. Во-вторых, '~~' или двойные инвертированные биты функционально такие же, как 'Math.floor()'. – alex

Смежные вопросы