Dans mon application, j'ai besoin de créer une horloge en direct selon différentes fuseaux horaires qui sont stockés dans la base de données.
Je l'ai presque réussi. P>
mais maintenant je suis confronté à une heure négative à l'horloge, Et je suis à l'abri des idées pour trouver une solution. P>
Je reçois l'heure de l'UTC à l'aide de Case 1: Cas 2: Cas 3: Case 1 et 2 fonctionne correctement mais je reçois une valeur négative dans le 3ème cas qui ne va pas. P> J'ai essayé Ajouter des commentaires au code pour mieux comprendre ce que je fais ici. J'espère que ça vous aide. P> Toute aide sera très appréciée. P> p> Nouvelle date () Code> et de calcul avec le fuseau horaire fourni à partir de la base de données. P> 0:31 (Time UTC) + 5:30 (Timezone) = '06: 01 ' Code> P> 06:31 (Time UTC) - 6:30 (Timezone) = '00: 01 ' Code> P> 5: 0 (Time UTC) - 7: 0 (Timezone ) = '-02: 00' code> p> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<b id="clockTime"></b>
4 Réponses :
Si vous ne voulez pas utiliser une bibliothèque comme un moment, qui est livré avec la manipulation du fuseau horaire et il suffit de simplement ajouter / soustraire des heures d'une date donnée, que diriez-vous de les convertir en une unité de temps courante et de fonctionner à ce sujet? < PRE> XXX PRE>
Quelque chose comme ça les convertirait en un horodatage milliseconde et soustrayez cela plusieurs heures et le convertit à une date. P> P>
Avec votre format spécial d'opérateur: Heures: minutes, vous venez de le convertir en heures. Voir le code mis à jour.
Sinon, vous pouvez également le convertir en minutes pour éviter les problèmes de précision dans le / 60.0 code> avec (parties [0] === '-'? -1: 1) * (Paysint 1]) * 60 + parseint (parties [2])) code> et modifier la ligne 4 à Timezone * 60 * 1000 code>.
Vous devriez simplement être "en boucle" à 23:59 lorsque vous allez négativement. Vous pouvez simplement ajouter quelque chose à vérifier si cela devient négatif puis simplement ajouter le temps manquant: mais idéalement, vous ne voulez vraiment pas gérer ces types de délais de fuseau horaire comme autres bibliothèques sont déjà manipulés, c'est-à-dire instant.js p> p> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<b id="clockTime"></b>
Oui, je pensais la même chose, mais je n'étais pas sûr de ce calcul.
Ajouter 24 à votre FT CODE> FT CODE> REMIS DE 24: function CalcTime(UTCTIME, TIMEZONEOFFSETTIME) {
if (oparator == "+") {
var FT = UTCTIME + TIMEZONEOFFSETTIME;
} else {
var FT = UTCTIME - TIMEZONEOFFSETTIME + 24;
FT = FT % 24;
}
FT = FT.toFixed(2);
floatToTime(FT);
}
Vous voulez récupérer / afficher l'heure pour un décalage de fuseau horaire donné? Sauf si vous aimez le faire pour un passe-temps, restez à l'écart des méthodes de chaîne et utilisez les fonctions de la date, non?
p>
var offsetMS = -5.5 * 3600000
var myDate = new Date()
var dateWithOffset = new Date( myDate.getTime() + offsetMS )
var formatted = dateWithOffset.toLocaleString("en-GB",{timeZone:"UTC",hour:"numeric",minute:"numeric"})
console.log(formatted)
La raison d'utiliser une chaîne est que je reçois un fuseau horaire dans le format de temps ex. +5: 50 code> (Colon séparé), dans votre cas, ce serait -5: 30 code>, et si j'utilise votre méthode, j'ai toujours besoin de convertir du temps en premier.
Pertinent: YouTu.be/-5WPM-gesoy