2016-05-15 6 views
3

В принципе я могу в состоянии обнаружить список временных зон системы, используя следующий код:Access Текущая система Time Zone

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

Запуск этого кода, я следующий вывод в консоли.

enter image description here

В этом списке, я хочу знать, что одна моя текущая система следующая? Потому что я хочу получить конкретную информацию об этом часовом поясе. Как и в следующем кодексе, мне было ясно написано «Азия/Калькутта».

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

Запустив код, я смогу получить «Asia/Kolkata» в качестве вывода?

EDIT: Я уже использовал NodaTime здесь и код, предназначенный для этой цели.

// 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); 

Но в этом, я получаю исключение в отношении,

Исключение типа 'System.TimeZoneNotFoundException' был брошен.

Я использую систему Mac и редактор как Mono Develop - Unity, а мои целевые устройства - это iPhone.

ответ

2

Используя этот код вы можете получить локальный объект TimeZoneInfo.

TimeZoneInfo infos = TimeZoneInfo.Local; 
+0

, используя это, я получаю «Local» на выходе, я хочу «Asia/Kolkata» на выходе. – Siddharth

+0

use infos.DisplayName свойство, чтобы получить отображаемое имя от объекта TimeZoneInfo. –

+0

infos.DisplayName также показывают «Local» на выходе. – Siddharth

1

Используйте этот

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

Вы можете увидеть эту ссылку TimeZoneIds

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

+0

В этом FindSystemTimeZoneById («Стандартное время Индии») не работает, я уже дал исключение в своем вопросе. – Siddharth

+0

Выше кода содержит некоторую синтаксическую ошибку, так что она не может работать – Siddharth

+0

Ok По поиску Я нашел ссылку решить вашу проблему, реализовав вспомогательную функцию, вы можете увидеть эту ссылку: http://stackoverflow.com/questions/5996320/net -timezoneinfo-from-olson-time-zone –

0

В окне редактора Unity5.1.3, TimeZoneInfo.GetSystemTimeZones() возвращают пустой список. TimeZoneInfo.FindSystemTimeZoneById() и TimeZoneInfo.CreateCustomTimeZone() оба повышают System.TimeZoneNotFoundException. , но он хорошо работает в устройстве Android.

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

В основном моя целевая платформа - это iPhone, поэтому я могу запустить эту строку, var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById («Стандартное время Индии»); – Siddharth

+0

В редакторе Unity я получаю исключение, как описано выше в моем вопросе. – Siddharth

+0

Используя этот способ, сколько часовых поясов я могу отобразить? Потому что я хочу покрыть все временные интервалы. – Siddharth

 Смежные вопросы

  • Нет связанных вопросов^_^