TimeZoneInfo.FromSerializedString(String) Yöntem

Tanım

Özgün serileştirilmiş nesneyi yeniden oluşturmak için dizenin seri durumdan çıkarılır TimeZoneInfo .

C#
public static TimeZoneInfo FromSerializedString(string source);

Parametreler

source
String

Seri hale getirilmiş TimeZoneInfo nesnenin dize gösterimi.

Döndürülenler

Özgün serileştirilmiş nesne.

Özel durumlar

source parametresidirEmpty.

source parametresi null bir dizedir.

Kaynak parametre bir TimeZoneInfo nesnenin seri durumdan çıkarılamaz.

Örnekler

Aşağıdaki örnek, yerel sistemden Antarktika/Güney Kutbu saat dilimini almaya çalışır. Başarısız olursa kod, uygulama dizinindeki bir metin dosyasından saat dilimiyle ilgili bilgileri almaya çalışır. Bu deneme başarısız olursa, kod saat dilimini oluşturur ve saat dilimi hakkındaki bilgileri metin dosyasına yazar.

C#
private TimeZoneInfo InitializeTimeZone()
{
   TimeZoneInfo southPole = null;
   // Determine if South Pole time zone is defined in system
   try
   {
      southPole = TimeZoneInfo.FindSystemTimeZoneById("Antarctica/South Pole Standard Time");
   }
   // Time zone does not exist; create it, store it in a text file, and return it
   catch
   {
      const string filename = @".\TimeZoneInfo.txt";
      bool found = false;
      
      if (File.Exists(filename))
      {
         StreamReader reader = new StreamReader(filename);
         string timeZoneInfo;
         while (reader.Peek() >= 0)
         {
            timeZoneInfo = reader.ReadLine();
            if (timeZoneInfo.Contains("Antarctica/South Pole"))
            {
               southPole = TimeZoneInfo.FromSerializedString(timeZoneInfo);
               reader.Close();
               found = true;
               break;
            }   
         }
      }
      if (!found)
      {               
         // Define transition times to/from DST
         TimeZoneInfo.TransitionTime startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 10, 1, DayOfWeek.Sunday); 
         TimeZoneInfo.TransitionTime endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 3, DayOfWeek.Sunday);
         // Define adjustment rule
         TimeSpan delta = new TimeSpan(1, 0, 0);
         TimeZoneInfo.AdjustmentRule adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1989, 10, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition);
         // Create array for adjustment rules
         TimeZoneInfo.AdjustmentRule[] adjustments = {adjustment};
         // Define other custom time zone arguments
         string displayName = "(GMT+12:00) Antarctica/South Pole";
         string standardName = "Antarctica/South Pole Standard Time";
         string daylightName = "Antarctica/South Pole Daylight Time";
         TimeSpan offset = new TimeSpan(12, 0, 0);
         southPole = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments);
         // Write time zone to the file
         StreamWriter writer = new StreamWriter(filename, true);
         writer.WriteLine(southPole.ToSerializedString());
         writer.Close();
      }
   }
   return southPole;
}

Açıklamalar

Windows'daki kayıt defterinde veya Linux ve macOS'taki ICU Kitaplığı'nda bulunmayan bir saat dilimi oluşturmak için gereken tüm kodu sağlamanın bir alternatifi vardır. Özel bir saat dilimi tanımlayabilir ve yöntemini tek başına yürütülebilir dosyada kullanabilir ToSerializedString veya bir uygulamanın kurulum programını kullanarak saat dilimini dize olarak kaydedebilirsiniz. Uygulama daha sonra bu dizeyi depolama konumundan alabilir ve yöntemini kullanarak FromSerializedString örneği oluşturabilir.

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Ayrıca bkz.