Windows phone 8 在Windows Phone中将本地时区转换为PST

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

我需要在Windows Phone中将我的本地时区转换为PST,我们有API吗?如果不是,那么这里的最佳实践是什么?请注意,根据手机在世界上的位置,手机可以位于任何时区。

假设您指的是太平洋时间,您可以使用我的项目,假设
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:啊,你只需要当前时间?那肯定会更容易。我会编辑我的答案。。。