2009-09-18 8 views

Répondre

0

I figured it out:

DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); 
dtfi.FullDateTimePattern = "yyyy-MM-ddTHH:mmzzz"; 
DateTime s = DateTime.Parse(inputstring, dtfi); 
s = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(s, "AUS Eastern Standard Time"); 
TimeZoneInfo tzz = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time"); 
string timezone = (tzz.IsDaylightSavingTime(s)) ? tzz.DaylightName : tzz.StandardName; 

CultureInfo culture = CultureInfo.CreateSpecificCulture("en-AU"); 
string output = String.Format("{0} | {1}", s.ToString("f", culture), timezone); 

donc entrée est: 2009-10-13T10: 00 -7: 00
la sortie est: Mercredi, 14 Octobre 2009 4:00 | AUS Eastern Daylight Time

entrée est: 2009-9-13T10: 00-7: 00
la sortie est: Lundi, 14 Septembre 2009 03:00 | AUS Eastern Standard Time

2

Essayez TimeZoneInfo.ConvertTime (DateTime dateTime, TimeZoneInfo sourceTimeZone, TimeZoneInfo destTimeZone)

http://msdn.microsoft.com/en-us/library/bb382770.aspx

+1

Oui, mais ... le fuseau horaire destimation, je ne veux pas que ce soit toujours l'heure Standard, je veux qu'il s'ajuste automatiquement à l'heure d'été aussi bien, convertime est plutôt fixe – Ayyash

+0

@Ayyash: Non, ConvertTime tiendra également compte de l'heure d'été. –

+0

actualyl vous avez raison, ce que je cherche est d'afficher correctement le fuseau horaire identifié ou le nom d'affichage, en retournant la propriété IsDaylightSavingTime, mais comment? Comment puis-je savoir si c'est l'heure d'été dans un fuseau horaire complètement différent? – Ayyash

Questions connexes