我在 GMT 时区的 Xamarin Studio (v4.0.12 - Mono 3.2.3) 中运行以下代码...
var utcDateTime = new DateTime(1970, 07, 15, 15, 00, 00, DateTimeKind.Utc);
string utcTimeString = utcDateTime.ToLongTimeString();
string localTimeString = utcDateTime.ToLocalTime().ToLongTimeString();
...但两个变量都返回值“3:00:00 PM”。
如果我在 .NET 4.0 下运行相同的代码,那么第二个变量是“4:00:00 PM”。这是我所期望的。
我不确定我错过了什么,这两者不应该相同吗?
从“ToLocalTime()”返回的 DateTime 看起来与原来的相同,只是“Kind”现在是“Local”。
更新:
这肯定与上述示例中的年份有关。如果输入当前年份,则时间不同(且正确),如果输入 1970 年之前的任何内容,则忽略时区。
这是我的时区信息的副本,基于http://msdn.microsoft.com/en-us/library/system.timezone.currenttimezone.aspx中的代码
Standard time name: GMT
Daylight saving time name: BST
Current date and time: 2013-10-02 09:27
Daylight saving time? True
Coordinated Universal Time: 2013-10-02 08:27
UTC offset: 01:00:00
Daylight saving time for year 1970:
0001-01-01 00:00 to 0001-01-01 00:00, delta: 00:00:00
1970
7/15/1970 3:00:00 PM
7/15/1970 3:00:00 PM
2005
7/15/2005 3:00:00 PM
7/15/2005 4:00:00 PM
Now
10/2/2013 8:27:09 AM
10/2/2013 9:27:09 AM