2015-04-28 2 views
1

Я пишу многопользовательскую игру в формате javascript, мой код сервера находится в nodejs. Мне нужно синхронизировать время между сервером и клиентом.Javascript Date() инициализация в плохом формате

На стороне сервера я вызываю Date() и отправляю строку даты клиенту. Клиентские recieves:

Tue Apr 28 2015 15:37:01 GMT+0000 (UTC) 

После инициализации с:

var time = Date("Tue Apr 28 2015 15:37:01 GMT+0000 (UTC)"); 

переменного время, установленные на местное время:

Tue Apr 28 2015 17:37:03 GMT+0200 (CEST). 

Если я запускаю мой сервер, локальный то время правильно импортирование. Является ли проблема в разном формате времени, CEST vs UTC?

Спасибо за ответы

+0

'время' не имеет формата. Только когда вы показываете (строят) его, он будет использовать местный часовой пояс для форматирования строки. Если вы явно используете 'time.toUTCString()', это не будет. – Bergi

ответ

0

Вы можете отправить с сервера Дат e в миллисекундах, а затем конвертирует миллисекунды в дату в требуемом формате.

Сервер:

время вара = новая дата() GetTime();.

Cleint:

дата вар = новая дата (время);

+0

Спасибо, Date(). GetTime(); решает его. – naril

1

Существуют различные способы обработки в часовых поясов в JS.

Установка времени UTC через систему

использования .setUTCHours() Here вы можете увидеть, как использовать его.

Создать новую UTC Дата

new Date(Date.UTC(year, month, day, hour, minute, second))

Date.UTC объясняется here

Правильная разница в часовых поясов вручную

var d = new Date(xiYear, xiMonth, xiDate); 
d.setTime(d.getTime() + d.getTimezoneOffset()*60*1000); 
Смежные вопросы