La prochaine date/heure à laquelle une heure avancée de la transition se produit
Je voudrais écrire (ou s'il existe déjà) une fonction en C# qui retourne la date/heure de la prochaine transition d'heure d'été donné un Système.TimeZoneInfo objet et un particulier "comme de" l'heure dans le fuseau horaire. Le temps retourné doit être dans la zone de temps. La fonction que je veux a cette signature:
public DateTime GetNextTransition(DateTime asOfTime, TimeZoneInfo timeZone)
{
//Implement me!
}
Par exemple, si je passe dans le "Eastern Standard Time" TimeZoneInfo objet, et 1/21/2011@17:00 comme le "asOfTime", je m'attends à cette fonction de retour 3/13/2011@2:00.
La Système.TimeZoneInfo.TransitionTime structure semble avoir toutes les informations dont j'ai besoin, mais, idéalement, il y aurait une sorte de mécanisme intégré pour convertir la règle en date réelle. Quelqu'un a des suggestions?
Utilisation Noda Temps et de voir ce thread sur la façon d'obtenir des périodes de transition de l'utiliser.
OriginalL'auteur Stuart Lange | 2011-01-21
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à l'exemple sur cette page, je pense qu'il va obtenir ce dont vous avez besoin.
MSDN - TransitionTime
Je suis ici pour chaque minute dans le dernier 4,5 ans, en attente pour vous de poster votre code. je travaille encore sur elle?
Notez qu'il existe une méthode interne appelé
TransitionTimeToDateTime
qui fait cela. Vous pouvez le trouver dans le .NET Source de la Référence.on a encore besoin de construire
TransitionTime
soi-même. Cela ne résout pas le problème posté par OT, que j'ai également chercher une solution pour...Regarder dans
TimeZoneInfo.GetAdjustmentRules
. Il est assez facile à partir de là. Toutefois, si vous voulez un moyen plus facile et plus fiable, utiliser les Noda TempsOriginalL'auteur Jamiegs
Hello_. Il pourrait être trop tard mais je vais poster ici le code que j'ai utilisé pour ce but. Cela est peut-être sûr que quelqu'un est temps de la mettre en œuvre. Je l'ai fait en fait avec l'aide de ce lien est @Jamiegs réponse.
Exemple d'utilisation ressemblera à ceci:
Vous pouvez trouver le code que j'ai joué avec ici.
OriginalL'auteur codtex
Système.TimeZoneInfo.TransitionTime ressemble à une structure qui peut tenir ces temps de transition des données, et non pas une fonction qui calcule les valeurs réelles. Pour créer une telle fonction, je voudrais trouver les données en ligne quelque part, puis de créer des valeurs à l'aide de la statique CreateFloatingDateRule ou CreateFixedDateRule méthodes.
OriginalL'auteur Patrick Szalapski