Maison > interface Web > js tutoriel > Comment puis-je créer un objet date JavaScript avec un fuseau horaire spécifique sans utiliser de représentations sous forme de chaîne ?

Comment puis-je créer un objet date JavaScript avec un fuseau horaire spécifique sans utiliser de représentations sous forme de chaîne ?

Mary-Kate Olsen
Libérer: 2024-12-23 16:13:45
original
680 Les gens l'ont consulté

How Can I Create a JavaScript Date Object with a Specific Timezone Without Using String Representations?

Création d'un objet date avec un fuseau horaire spécifique

Dans les applications Web, il est courant de collecter des informations de date et d'heure auprès des utilisateurs via des listes déroulantes ou des champs de saisie. Cependant, la création d'un objet Date JavaScript avec des valeurs numériques peut entraîner des problèmes de fuseau horaire, en particulier lorsque les données sont sérialisées et désérialisées.

Problème : objet Date dans le fuseau horaire actuel

Considérez le code suivant :

new Date(xiYear, xiMonth, xiDate);
Copier après la connexion

Ce code crée un objet Date basé sur l'année, le mois et la date spécifiés. Cependant, il suppose le fuseau horaire actuel de l'utilisateur, ce qui peut entraîner des écarts si l'application utilise un fuseau horaire différent.

Solution : définir l'heure UTC

Pour créer un objet Date dans un fuseau horaire spécifique sans utiliser de représentation sous forme de chaîne, suivez ces étapes :

  1. Créez un objet Date à partir d'UTC valeurs :

    const utcDate = new Date(Date.UTC(xiYear, xiMonth, xiDate));
    Copier après la connexion
  2. Définissez le fuseau horaire souhaité :

    utcDate.setUTCHours(utcDate.getUTCHours() + timezoneOffset);
    Copier après la connexion

Où timezoneOffset est le différence entre le fuseau horaire de l'utilisateur et UTC (en heures).

Exemple

Par exemple, si le fuseau horaire de l'utilisateur est GMT 01h00 et que la date souhaitée est le 5 avril :

const xiYear = 2023;
const xiMonth = 3; // April is 0-indexed
const xiDate = 5;
const timezoneOffset = 1;

const utcDate = new Date(Date.UTC(xiYear, xiMonth, xiDate));
utcDate.setUTCHours(utcDate.getUTCHours() + timezoneOffset);

console.log(utcDate.toLocaleString()); // Output: "Apr 5, 2023, 2:00:00 AM GMT+01:00"
Copier après la connexion

Cette approche garantit que le L'objet Date est créé dans le fuseau horaire souhaité sans recourir à des représentations sous forme de chaîne ou à un code détaillé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal