Я не знаю, почему это работает в других браузерах, но не работает на Chrome, но позвольте мне дать вам общий совет: Делайте это как можно проще.
Вы выполняете различные манипуляции с объектом Date, которые трудно отслеживать и отлаживать. Все, что вам нужно сделать, это просто отправить объект Date как есть, который будет автоматически преобразован в Date (). ToISOString (). Эта строка, которая выглядит примерно так: 2020-04-02T23: 51: 13.866Z - единственное, что вам нужно хранить. Это универсальное время UT C, на которое не влияют изменения в вашем регионе и переход на летнее время.
Таким образом, ваше излучение socketIO должно выглядеть так:
socket.emit('brodcast', putUserMsg( $('#msg').val(), new Date()));
Позже, в вашем пользовательском интерфейсе вы можете делать нужные манипуляции с датой и представлять ее в виде sh. Получив строку Date (которая была создана автоматически при отправке объекта Date ранее) обратно с сервера, вы можете сделать что-то вроде этого:
<p>{new Date(timeStringFromServer).toLocaleTimeString()}</p>//This will create a Date object from the string, and allow you to manipulate it.
Но вещь, которую вы отправляете через сокет .io / ajax, всегда должен быть таким же простым, как новая Дата (). Также я рекомендую использовать Момент. js для дат.