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