2009-08-11 7 views
1

Pour mon application, j'importe l'événement d'agenda à partir de Google Agenda. Le seul problème auquel je suis confronté est la liste des fuseaux horaires. Je reçois le fuseau horaire en sortie de google calendar xml, que je dois vérifier avec la liste des fuseaux horaires et ajouter du temps en conséquence ... donc d'où je peux obtenir cette liste de fuseaux horaires standard .. ou une autre alternative pour atteindre le même .Problème de liste de fuseaux horaires

+0

Plate-forme? La langue? –

+0

langue -erlang – Abhimanyu

Répondre

2

Si vous utilisez Java, utilisez Joda Time - le fuseau horaire ID donnée par Google Calendar sera un le temps Joda comprend. La classe standard TimeZone peut très bien le comprendre aussi, mais je pense que Joda est plus susceptible de le faire.

En supposant que vous voyez tous les trucs VTIMEZONE qui va de pair avec l'événement, vous pouvez ignorer les détails - il suffit d'utiliser l'ID. Malheureusement, certains ID de fuseau horaire ont changé au fil du temps. Je ne me souviens pas d'exemples, mais vous devrez peut-être faire quelques traductions si vous avez les anciens noms.

Si vous utilisez .NET, vous avez vraiment besoin d'utiliser les .NET 3.5 et la classe TimeZoneInfo. Malheureusement, cela utilise des noms Windows au lieu des ID Olson, mais il y a une liste de traduction disponible quelque part (je peux le déterrer si vous voulez).

Si vous ne l'utilisez l'une de ces plates-formes, vous avez besoin essentiellement de trouver une bibliothèque qui prend en charge Olson Zoneinfo names. (Cet article wikipedia a quelques liens utiles en bas.)

Je voudrais certainement essayer de trouver une bibliothèque qui sera en mesure de vous donner les informations pertinentes basées sur un ID, plutôt que d'utiliser les règles données dans le calendrier entrée. Les fuseaux horaires changent au fil du temps et la base de données zoneinfo contient des informations historiques et futures, mais celles-ci ne peuvent pas être facilement encodées dans l'entrée du calendrier.

+0

J'essaie de réaliser cette chose ine erlang .. – Abhimanyu

+0

Il aurait été utile de le dire dans la question. Bon, eh bien je ne sais rien sur Erlang - mais il doit y avoir des bibliothèques de date/heure décentes pour cela, et j'imagine qu'ils comprendraient les ID Olson. –

+0

Je ne t'en veux pas Jon, ton coup a couvert 90% ou mieux, mais Erlang arrive à environ 100-1 ... Charlie Martin encaisse un gros billet long shot. :) –

1

Découvrez ces fonctions

calendar:datetime_to_gregorian_seconds({Date, Time}) 
calendar:gregorian_seconds_to_datetime(Seconds) -> {Date, Time} 

Conversion à « grégoriens secondes » et corriger le décalage et la conversion de fuseau horaire de retour à la forme de la date est la moitié de la solution.

Il n'y a pas de bibliothèque pour accéder datafiles de fuseau horaire dans Erlang/OTP, et pour autant que je sache, il n'y a pas de bibliothèque tierce partie pour obtenir à elle non plus. Vos options sont donc de convertir les bases de données de timezone disponibles en quelque chose utilisable par Erlang, ou de se contenter d'en connaître quelques-unes.

Vous savez, sauf si vous voulez démarrer un projet pour lire des données de fuseau horaire dans Erlang. :-)

Questions connexes