2013-01-28

.NETte Zeitzonen

Sie sind es ja schon gewohnt, dass ich zu Posts gelegentlich ein Follow-Up mache. Da ich gerne über den Tellerrand schaue, wollte ich wissen, wie man in .NET zwischen Zeitzonen konvertiert.
Wie schon bei meiner Java-Version weise ich auch hier darauf hin, dass das Auswählen einer Zeitzone auf Basis des angezeigten namens nicht ganz sauber ist. Aber stattdessen die Auswahl in eine Klappliste zu verfrachten, ist ja kein großer Akt.
Eine tolle Site zur Online-Konvertierung von C# nach HTML ist übrigens manoli.net.

   1:  using System;
   2:  using System.Collections.ObjectModel;
   3:  using System.Linq;
   4:   
   5:  namespace TimeZoneDemo1
   6:  {
   7:      class Program
   8:      {
   9:          // siehe http://msdn.microsoft.com/en-us/library/bb397769.aspx
  10:   
  11:          static void Main(string[] args)
  12:          {
  13:              ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
  14:              Console.Out.WriteLine("Anzahl: " + timeZones.Count);
  15:   
  16:              TimeZoneInfo berlin = null;
  17:              TimeZoneInfo newYork = null;
  18:   
  19:              for (int i = 0; i < timeZones.Count; i++)
  20:              {
  21:                  TimeZoneInfo tz = timeZones.ElementAt(i);
  22:                  String name = tz.DisplayName;
  23:                  Console.WriteLine("Name: " + name);
  24:   
  25:                  String lc = name.ToLower();
  26:   
  27:                  if (lc.Contains("berlin"))
  28:                  {
  29:                      berlin = tz;
  30:                  }
  31:                  else if (lc.Contains("eastern zeit"))
  32:                  {
  33:                      newYork = tz;
  34:                  }
  35:              }
  36:   
  37:              if ((berlin != null) && (newYork != null))
  38:              {
  39:                  DateTimeOffset dto = new DateTimeOffset(2013, 1, 28, 19, 20, 0,
  40:                      berlin.BaseUtcOffset);
  41:                  DateTime utc = dto.UtcDateTime;
  42:                  Console.WriteLine(berlin.DisplayName + ": " + TimeZoneInfo.ConvertTimeFromUtc(utc, berlin).ToShortTimeString());
  43:                  Console.WriteLine(newYork.DisplayName + ": " + TimeZoneInfo.ConvertTimeFromUtc(utc, newYork).ToShortTimeString());
  44:              }
  45:          }
  46:      }
  47:  }

No comments:

Post a Comment