Когда время системы неверно, как я могу получить правильное время в JavaScript?

1
let currentDate = new Date();

CurrentDate связан со временем системы, поэтому, если время системы неверно, currentDate будет неправильным.

  • 1
    Подключитесь к серверу, который имеет правильную метку времени, и вместо этого используйте эту метку в качестве текущей даты.
Теги:
date

2 ответа

2

Вы можете использовать API атомных часов, например World Clock:

http://worldclockapi.com/api/json/est/now

{
    "$id":"1", "currentDateTime":"2018-10-26T05:27-04:00", "utcOffset":"-04:00:00",
    "isDayLightSavingsTime":true, "dayOfTheWeek":"Friday",
    "timeZoneName":"Eastern Standard Time", "currentFileTime":131850052212461578,
    "ordinalDate":"2018-299", "serviceResponse":null
}

Единственным недостатком этого является то, что для этого потребуется сделать вызов REST. Таким образом, будет задержка между вызовом JavaScript и получением ответа. Вы также можете открыть свою собственную конечную точку на стороне сервера, если у вас есть контроль над этим.

  • 0
    если я использую API часов, я не знаю, API-интерфейс безопасен. Есть ли другой метод? Я не хочу отвечать другим API;
  • 1
    Затем создайте свой собственный доверенный API, к которому имеют доступ только ваши аутентифицированные пользователи / приложения. Если вы не можете использовать системное время, и вы также не можете использовать чужое системное время, то у вас практически нет выбора, верно?
0

Если HTTP-запрос является опцией:

let dateNow;
fetch('http://currentmillis.com/time/minutes-since-unix-epoch.php')
  .then(res => res.text())
  .then(min => {
    dateNow = new Date(parseInt(min) * 1000 * 60);
    console.log(dateNow);
  });

объяснение

API возвращает минуты, прошедшие с эпохи, по соображениям производительности. Преобразуйте его в миллисекунды, а затем создайте объект даты

  • 0
    Если я хочу показывать правильную дату всегда на странице, мне нужно получать http запрос каждую секунду ??
  • 0
    @ 柠檬 不 酸 - нет, вы должны быть в состоянии определить разницу между часами локального и временного сервера и просто применить разницу к локальным вызовам. Посоветуйтесь с сервером времени с интервалами в 1 или даже 10 минут, если вы считаете, что локальные системные часы могут непредсказуемо меняться.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню