Windows phone 8 在Windows Phone中将本地时区转换为PST
我需要在Windows Phone中将我的本地时区转换为PST,我们有API吗?如果不是,那么这里的最佳实践是什么?请注意,根据手机在世界上的位置,手机可以位于任何时区。假设您指的是太平洋时间,您可以使用我的项目,假设Windows phone 8 在Windows Phone中将本地时区转换为PST,windows-phone-8,Windows Phone 8,我需要在Windows Phone中将我的本地时区转换为PST,我们有API吗?如果不是,那么这里的最佳实践是什么?请注意,根据手机在世界上的位置,手机可以位于任何时区。假设您指的是太平洋时间,您可以使用我的项目,假设DateTime在本地转换方面工作正常 // Initial conversion using BCL classes DateTime local = ...; DateTime utc = local.ToUniversalTime(); // The rest in Nod
DateTime
在本地转换方面工作正常
// Initial conversion using BCL classes
DateTime local = ...;
DateTime utc = local.ToUniversalTime();
// The rest in Noda Time
Instant instant = Instant.FromDateTimeUtc(utc);
DateTimeZone zone = DateTimeZoneProviders.Tzdb["America/Los_Angeles"];
ZonedDateTime pacificTime = instant.InZone(zone);
从ZonedDateTime
中,您可以获得LocalDateTime
,或者将其作为ZonedDateTime
保存。(也可以使用ToDateTimeUnspecified()
将日期时间转换回DateTime
)
您可以要求Noda Time进行两部分转换,但由于TimeZoneInfo
的PCL版本不提供Id
属性,因此我们必须执行一些试探法来猜测时区-使用DateTime
进行第一次转换可能更可靠一些(尽管它不能让您对如何处理DST转换有太多的控制)
如果您只需要当前时间,则根本不需要BCL类型。您可以一直使用Noda time:
// You'd normally inject this, so that you can test different scenarios. Noda Time
// provides a Testing package which includes a fake implementation of IClock.
// Use SystemClock.Instance for production use.
IClock clock = ...;
DateTimeZone zone = DateTimeZoneProviders.Tzdb["America/Los_Angeles"];
ZonedDateTime pacificTime = clock.Now.InZone(zone);
在野田佳彦时间2.0中,我们引入了
ZonedClock
,这也会让事情变得更简单-你可以为太平洋时区创建一个ZonedClock
,然后通过“PST”询问它当前的ZonedDateTime
或当前的LocalDateTime
,你的意思是“太平洋时间”吗?您真的需要转换本地时区中的任意值,还是只转换太平洋时间中的当前时间?(如果是后者,您可以使用DateTime.UtcNow来考虑本地时区。)您好@Jon Skeet是的,现在是太平洋时间,我需要太平洋时间中的当前时间,但如何在TimeZoneInfo.ConvertTime()中定义destinationTimeZonemethod@user3895718:啊,你只需要当前时间?那肯定会更容易。我会编辑我的答案。。。