new Date() récupère l'heure système actuelle. Cela signifie que si l'heure système actuelle est incorrecte (dans mon cas, la machine cliente était un système Windows, dont l'heure a été définie à -4 heures de l'heure actuelle), new Date() fournira une valeur erronée.

J'ai besoin d'un moyen d'obtenir la date / l'heure actuelle du client sans utiliser la date / l'heure de sa machine (probablement un moyen de déterminer le fuseau horaire où le client est assis et à son tour de calculer l'heure).

Comment faire cela dans JS?

0
Scary Terry 16 sept. 2020 à 09:58

2 réponses

Meilleure réponse

Exemple de travail utilisant intl résoluoptions et fetch

const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;

fetch("https://worldtimeapi.org/api/timezone/"+tz)
  .then(response => response.json())
  .then(data => console.log(tz,data.dst,data.datetime));

Un utilisant l'adresse IP de l'utilisateur

fetch("https://worldtimeapi.org/api/ip")
  .then(response => response.json())
  .then(data => console.log(data.dst,data.datetime));
2
mplungjan 16 sept. 2020 à 07:39

Vous pouvez obtenir du temps à partir d'une API qui se trouve sur Internet, de cette façon, vous n'avez pas à utiliser le temps client. Le site Web suivant où vous pouvez faire une demande d'API pour obtenir une heure. J'espère que cela aide.

https://worldtimeapi.org/

Voici un exemple de la façon dont vous pouvez obtenir le fuseau horaire en fonction de votre adresse IP à partir de l'API ci-dessus.

Remarque: veuillez consulter le lien ci-dessus pour obtenir le lien API pour le fuseau horaire dont vous avez besoin et fournir ici

$("#btn").on("click", function() {
  $.ajax({

    url: "https://worldtimeapi.org/api/ip",
    success: function(result) {
      console.log(result)
      $("#tm").text(result.datetime);
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="btn" type="button" value="Get Current Time" />
<p id="tm" />
2
mplungjan 16 sept. 2020 à 07:35