2010-02-19 105 views
0

我们有用C#编写的Windows Mobile应用程序(紧凑框架)。区域设置设置为(英文)新西兰。时区设置为GMT + 12新西兰。使用C#将GMT日期转换为本地时间时出现问题?

我们用GMT/UTC格式存储日期。 我们有一个日期2010-02-18 18:00:00在UTC

这次在新西兰是上午7:00。

当我们调用DateTime对象

starttime = starttime.ToLocalTime(); 

上我们得到了9:00。
我们做错了什么?

+0

您是否验证过'starttime'确实在GMT? – 2010-02-19 22:54:38

+0

如果您的时区是GMT + 12,应该* 18.00小时*不会导致*第二天6.00小时*? 7.00小时和9.00小时都不是*正确答案。 *(困惑......)* – Treb 2010-02-19 22:55:52

+0

@特雷布:我猜新西兰是在二月中旬的夏季。奇怪... – 2010-02-19 22:57:19

回答

3

您是否在该日期时间指定了“kind”?事情是这样的:

DateTime parsedStartTime = DateTime.SpecifyKind(
    DateTime.Parse(starttime), 
    DateTimeKind.Utc); 

DateTime localStartTime = parsedStartTime.DateToLocalTime(); 

这可能会帮助,因为它可能不知道,你现在有日期时间是UTC的类型(很可能是不确定)。

如果这没有帮助,也许你的一些代码显示你如何设置启动时间会有所帮助。

+0

我将DateTimeStyles.AssumeUniversal添加到我们的ParseExact方法,并且正常工作。 – Pentium10 2010-02-19 23:21:26

+0

很高兴工作! – 2010-02-19 23:25:55

相关问题