2010-11-04 2 views
2

Je travaille sur un projet personnel impliquant Javascript, et dans le cadre de ce projet, je veux saisir la date actuelle (y compris le temps) et l'afficher en conséquence. Pas grave, n'est-ce pas? Eh bien, le affaire est que je veux retourner l'heure & date dans Eastern Daylight TIme, peu importe où dans le monde l'IP est.Comment calculer l'heure de l'Est en utilisant l'objet Javascript Date?

Si ce n'est pas possible, quelles méthodes alternatives suggérez-vous? Est-ce que php a cette fonctionnalité? Je pourrais écrire un simple script PHP qui prend une date et la convertit, mais je veux garder ceci dans JS si possible. J'essaie de trouver la meilleure façon de le faire, mais j'apprécierais toute aide que vous pourriez offrir.

Merci!

Répondre

1

Les objets JavaScript natifs Date ne connaissent que deux fuseaux horaires, le temps UTC et le fuseau horaire de l'utilisateur (et même dans ce cas, la quantité d'informations que vous pouvez extraire sur le fuseau horaire local est limitée). Vous pouvez travailler en UTC et soustraire 4 heures pour obtenir EDT, mais voulez-vous vraiment toujours EDT et pas EST?

Si vous voulez faire des conversions de fuseau horaire entre des régions arbitraires dans PHP, vous devrez faire glisser dans une grande bibliothèque avec ses propres informations de fuseau horaire, telles que TimezoneJS. Il est peut-être préférable de garder le contenu JavaScript en UTC, et de laisser le côté PHP se soucier de le mettre en forme pour un paramètre régional/fuseau horaire particulier, en utilisant par exemple le fuseau horaire de Date/Time.

+0

Merci pour l'information et les conseils. – Alex

5

J'ai trouvé ce on the internet, et il y a beaucoup plus de ces scripts:

function calcTime(offset) { 

    // create Date object for current location 
    d = new Date(); 

    // convert to msec 
    // add local time zone offset 
    // get UTC time in msec 
    utc = d.getTime() + (d.getTimezoneOffset() * 60000); 

    return new Date(utc + (3600000*offset)); 

} 

Ainsi, vous obtenez l'heure actuelle, ajouter le décalage de l'emplacement actuel pour obtenir le temps UTC puis vous revenez un nouvelle date où vous ajoutez à nouveau le décalage d'un certain fuseau horaire.

+0

Merci, votre réponse est parfaitement valide mais plus j'y pense, plus je pense que je vais utiliser PHP pour faire le formatage de la date. :) – Alex

+2

Notez que la conversion de l'heure UTC en "heure de l'Est" est un peu difficile si vous voulez tenir compte de l'heure d'été. – Eli

Questions connexes