0

我正在使用 Xamarin 表单为泰国创建一个应用程序。在那里我需要获取泰国的当前日期时间。当我从印度开发应用程序时,我的 api 调用(依赖于日期时间)失败了。我正在尝试获取泰国的当前日期时间。我曾尝试使用文化信息,但它返回我佛教日历中的日期并且时间不正确。我的要求是按照以下格式获取时间。20190602 15:50:51

4

3 回答 3

2
var info = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time");
DateTimeOffset localServerTime = DateTimeOffset.Now;
DateTimeOffset localTime = TimeZoneInfo.ConvertTime(localServerTime, info);

然后根据需要格式化

于 2019-06-03T09:08:23.383 回答
0

根据这个这个微软文档文章它应该工作

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现在时间是什么时候(东南亚标准时间)

于 2019-06-03T09:13:25.570 回答
0

有两种不同的时区标准(嗯,不是真正的标准,而是事实上的实现):

  • Microsoft Windows 时区数据。泰国的标识符是"SE Asia Standard Time"

  • IANA 时区数据库。泰国的标识符是"Asia/Bangkok"

TimeZoneInfo对象使用由其运行的操作系统定义的时区,因此使用了方法名称。由于您在 Android 而不是 Windows 上运行,因此您的操作系统可能会使用 IANA ID:TimeZoneInfo.FindSystemTimeZoneById

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);
于 2019-06-06T18:04:44.160 回答