2 votes

Comment obtenir les heures et les minutes à partir d'une chaîne UTC ?

Je veux convertir l'heure d'une date de l'heure locale en UTC et décoder ensuite cette heure UTC pour la ramener à l'heure locale d'origine.

Pour convertir l'heure locale en UTC, j'ai utilisé le code ci-dessous qui fonctionne bien.

const now = new Date();    
let d = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 13, 5, 0);
console.log(new Date(d).getHours(), new Date(d).getMinutes());

Le code ci-dessus fournit l'heure UTC qui est +5:30 et la sortie est 18,35 (18:35:00)

Ici, pour convertir 18,35 (18:35:00) en 13:05:00 j'ai utilisé le code suivant

const now = new Date();
let d = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 18, 35, 0);
console.log(d.toUTCString());

Le code ci-dessus me fournit une date au format string qui a l'heure 13:05:00 ce qui est correct.

Maintenant, je veux obtenir les heures et les minutes de cette chaîne de date.

J'ai essayé d'ajouter :

new Date(d.UTCString()) 

Mais, il me fournit 18 heures et 35 minutes alors que je veux 13 heures et 05 minutes. Veuillez m'aider à résoudre ce problème. Merci.

5voto

Rohit Bajaniya Points 82
const now = new Date();
let d = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 18, 35, 0);
console.log(d.getUTCHours(), d.getUTCMinutes());

2voto

RobG Points 41170

Vous semblez compliquer les choses à l'excès. Pour obtenir l'heure UTC, il suffit d'utiliser getUTC pour obtenir les valeurs des heures et des minutes.

Pour obtenir l'heure locale équivalente à une heure UTC, utilisez la fonction setUTC pour définir les valeurs de l'heure et des minutes, par exemple

// Helper to pad single digits
function z(n) {
  return ('0' + n).slice(-2);
}

let d = new Date();
let localTime = z(d.getHours()) + ':' + z(d.getMinutes());
let utcTime = z(d.getUTCHours()) + ':' + z(d.getUTCMinutes());

// Print local time for d
console.log('Local time: ' + localTime);

// Print UTC time for d
console.log('UTC time: ' + utcTime);

// Set the time using UTC time in HH:mm format
utcTime = "13:05";
let [utcH, utcM] = utcTime.split(':');
d.setUTCHours(utcH, utcM);

console.log('At UTC ' + utcTime + ' the local time is ' + z(d.getHours()) + ':' + z(d.getMinutes()));

1voto

Chris Happy Points 4458

Solution :

  1. Réglez les heures et les minutes à l'aide des touches setHours() y setMinutes() Fonctions de date JS
  2. Obtenez les heures et les minutes en utilisant la fonction getHours() y getMintues() Fonctions de date JS

Remarque : la date actuelle est basée sur l'heure actuelle de l'utilisateur.

const now = new Date();
now.setHours(15);
now.setMinutes(30);

console.log(now.toString());
console.log(now.getMinutes());
console.log(now.getMinutes());

Une ressource pour comprendre un peu mieux le temps : digtialocean.com

1voto

evc Points 109

Voici toLocaleTimeString méthode

const now = new Date();    
let d = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 13, 5, 0);

console.log('locale', new Date(d).toLocaleTimeString('ru-kz', { timeStyle: 'short' }))
console.log('utc', new Date(d).getUTCHours() + ':' + new Date(d).getUTCMinutes())

0voto

Dinesh Patra Points 1065

Vous pouvez utiliser getTimezoneOffset . Voici un exemple d'obtention de l'heure et des minutes UTC actuelles

var curLocalDate = new Date();
var curlLocalMiliSec = curLocalDate.getTime();
var utcOffsetInMin   = curLocalDate.getTimezoneOffset();
var utcOffsetInMiliSec = utcOffsetInMin * 60 * 1000;

var utcTime = new Date(curlLocalMiliSec + utcOffsetInMiliSec);

var utcHour = utcTime.getHours();
var utcMinutes = utcTime.getMinutes();

console.log("Local time:" + curLocalDate.getHours() + ":" + curLocalDate.getMinutes());

console.log("UTC time:" + utcHour + ":" + utcMinutes);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X