Я пытаюсь использовать http://keith -wood.name / countdown.html для создания таймера обратного отсчета на основе текущего времени сервера и переменной datetime, возвращенной из mysql.
Даты правильно принимаются в виде переменных javascript.
var target = '2019-05-16 14:00:00'; /* end time */
var server = '2019-05-13 16:44:42'; /* server time*/
Функция formatTime () форматирует время правильно, иначе обратный отсчет не будет работать вообще.
function formatTime(timestamp) {
var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}
Код, похоже, игнорирует значение serverSync и вместо этого использует обратный отсчет по местному времени пользователя.
$('#selector').countdown({serverSync: formatTime(server), until: formatTime(target), format: 'dHMS'});
Я также попытался изменить порядок с теми же результатами
$('#selector').countdown({until: formatTime(target), serverSync: formatTime(server), format: 'dHMS'});
, если яЯ получил правильный формат:
alert(formatTime(server));
Mon May 13 2019 16:44:42 GMT-0600 (Mountain Daylight Time)
alert(formatTime(target));
Thu May 16 2019 14:00:00 GMT-0600 (Mountain Daylight Time)
, но счетчик отсчитывает время от местного времени пользователя:
2 days 23 hours 15 min 18 seconds
Что я здесь не так делаю?Кроме того, я должен добавить, несмотря на тот факт, что правильные даты / время получены от сервера - часовой пояс не отображается.Это должно быть EDT, а не MDT.Не уверен, что именно это является причиной ошибки, но мой сервер сообщает EDT, когда я проверяю
date
из командной строки.