Как получить текущую дату и время Таиланда с помощью C # - PullRequest
0 голосов
/ 03 июня 2019

Я создаю приложение для Таиланда, используя форму Xamarin.Там мне нужно получить текущую дату и время Таиланда.Поскольку я разрабатываю приложение из Индии, мои вызовы API (которые зависят от Datetime) становятся неудачными.Я пытаюсь узнать текущую дату и время Таиланда.Я пытался использовать информацию о культуре, но она возвращает мне дату в буддийском календаре, а время неверно.Мое требование, чтобы получить время в следующем формате.20190602 15: 50: 51

Ответы [ 3 ]

1 голос
/ 03 июня 2019
var info = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time");
DateTimeOffset localServerTime = DateTimeOffset.Now;
DateTimeOffset localTime = TimeZoneInfo.ConvertTime(localServerTime, info);

Затем отформатируйте, как вам нужно

0 голосов
/ 06 июня 2019

Существует два различных стандарта часовых поясов (ну, не совсем стандарты , но фактические реализации):

  • Данные о часовых поясах Microsoft Windows.Таиланд имеет идентификатор "SE Asia Standard Time".

  • База данных часовых поясов IANA .Таиланд имеет идентификатор "Asia/Bangkok".

Объект TimeZoneInfo использует часовые пояса, определенные операционной системой, в которой он работает, поэтому имя метода TimeZoneInfo.FindSystemTimeZoneById.Поскольку вы работаете на Android, а не на Windows, ваша ОС, скорее всего, использует идентификаторы IANA:

TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Asia/Bangkok");
DateTime nowInThailand = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);

Наконец, если вам нужно написать свой код так, чтобы он работал кроссплатформенно, рассмотрите возможность использования моего TimeZoneConverter библиотека.

TimeZoneInfo tz = TimeZoneConverter.TZConvert.GetTimeTimeZoneInfo("Asia/Bangkok");
DateTime nowInThailand = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
0 голосов
/ 03 июня 2019

Согласно , и , Документация Microsoft. Статьи должны работать

.
var now = DateTime.UtcNow;
try
{
   var thaiZone = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time");
   var thaiTime = TimeZoneInfo.ConvertTimeFromUtc(now, thaiZone);
   Console.WriteLine("The date and time in SE Asia Standard Time is {0} {1}", thaiTime, thaiZone.IsDaylightSavingTime(thaiTime) ? thaiZone.DaylightName : thaiZone.StandardName);
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("The registry does not define the SE Asia Standard Time zone.");
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the SE Asia Standard Time zone has been corrupted.");
}

Где thaiTime - текущее время в Таиланде (стандартное время Юго-Восточной Азии)

...