2016-05-15 18 views
3

Grundsätzlich kann ich in der Lage Liste der Systemzeitzonen folgenden Code zu erkennen:Zugriff auf aktuelle Systemzeitzone

foreach(TimeZoneInfo info in tz) 
    Debug.Log("time zone id : " + info.Id + " display name : " + info.DisplayName); 

Ausführen diesen Code, ich habe folgende Ausgabe in der Konsole.

enter image description here

In dieser Liste möchte ich wissen, die man meinem aktuellen System wird wie folgt? Weil ich spezifische Informationen über diese Zeitzone möchte. Wie im folgenden Code wurde mir klar "Asien/Kolkata" geschrieben.

TimeZoneInfo infos = System.TimeZoneInfo.FindSystemTimeZoneById("Asia/Kolkata"); 

Mit welchem ​​Code kann ich "Asia/Kolkata" als Ausgabe bekommen?

EDIT: Ich war bereits mit NodaTime hier und Code läuft für diesen Zweck.

// Create a NodaTime DateTimeZoneSource object for IANA time zone names 
    var dateTimeZoneSource = TzdbDateTimeZoneSource.Default; 

    // Get the Windows time zone by name (or use TimeZoneInfo.Local) 
    var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 

    // Convert between Windows and IANA time zone names 
    var tzdbTimeZoneInfo = dateTimeZoneSource.MapTimeZoneId(timeZoneInfo); 

    Console.WriteLine(tzdbTimeZoneInfo); 

Aber in diesem, ich bin immer Ausnahme in Bezug auf,

Ausnahme vom Typ 'System.TimeZoneNotFoundException' geworfen wurde.

Ich benutze Mac-System und Editor als Mono Develop - Unity und meine Zielgeräte sind iPhones.

Antwort

2

Mit dem folgenden Code Sie lokale Timezone Objekt bekommen.

TimeZoneInfo infos = TimeZoneInfo.Local; 
+0

mit dieser, ich bekomme "Local" in der Ausgabe, ich möchte "Asia/Kolkata" in der Ausgabe. – Siddharth

+0

Verwenden Sie die infos.DisplayName-Eigenschaft, um den Anzeigenamen aus dem TimeZoneInfo-Objekt abzurufen. –

+0

infos.DisplayName zeigt auch "Lokal" in der Ausgabe. – Siddharth

1

verwenden

TimeZoneInfo infos = TimeZoneInfo.FindSystemTimeZoneById(
      { "Asia/Kolkata", "India Standard Time" }); 

Sie diesen Link für TimeZoneIds sehen

http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/zone_tzid.html

+0

In dieser FindSystemTimeZoneById ("India Standard Time") funktioniert nicht, habe ich bereits eine Ausnahme in meiner Frage gegeben. – Siddharth

+0

Oben Code enthält einige Syntaxfehler, so dass es nicht ausgeführt werden kann – Siddharth

+0

Ok Durch die Suche habe ich einen Link gefunden, um Ihr Problem zu lösen, indem Sie eine Hilfsfunktion implementieren Sie können diesen Link sehen: http://stackoverflow.com/questions/5996320/net -timezoneinfo-from-olson-time-zone –

0

Am Fenster Unity5.1.3 Editor, TimeZoneInfo.GetSystemTimeZones() geben leer Liste. TimeZoneInfo.FindSystemTimeZoneById() und TimeZoneInfo.CreateCustomTimeZone() beide System.TimeZoneNotFoundException auslösen. aber es funktioniert gut in Android-Gerät.

private static DateTime ToSeoulTime(DateTime dateUtc, bool ignoreUnspecified = false) 
{ 
    if (ignoreUnspecified == false && dateUtc.Kind == DateTimeKind.Unspecified) 
    { 
     if (UnityEngine.Application.isEditor) 
     { 
      throw new Exception("dateUtc.Kind == DateTimeKind.Unspecified"); 
     } 
     else 
     { 
      UnityEngine.Debug.LogWarning("dateUtc.Kind == DateTimeKind.Unspecified"); 
     } 
    } 
    try 
    { 
     var seoulTimezone = TimeZoneInfo.FindSystemTimeZoneById("Korea Standard Time"); 
     return TimeZoneInfo.ConvertTime(dateUtc, seoulTimezone); 
    } 
    catch (System.TimeZoneNotFoundException e) 
    { 
     return new DateTime(dateUtc.AddHours(9).Ticks, DateTimeKind.Unspecified); 
    } 
} 
+0

Grundsätzlich ist meine Zielplattform das iPhone, also kann ich diese Zeile ausführen, var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById ("India Standard Time"); – Siddharth

+0

Im Unity Editor bekomme ich eine Ausnahme wie oben in meiner Frage erwähnt. – Siddharth

+0

Auf diese Weise, wie viele Zeitzonen kann ich zuordnen? Weil ich alle Zeitzonen abdecken möchte. – Siddharth

0

aktualisieren Sie Ihren Player Einstellungen .NET 4.6

Verwandte Themen