Я бегу следующий код в Xamarin студии (v4.0.12 - Mono 3.2.3) в GMT timeszone ...Is ToLocalTime сломан на Xamarin?
var utcDateTime = new DateTime(1970, 07, 15, 15, 00, 00, DateTimeKind.Utc);
string utcTimeString = utcDateTime.ToLongTimeString();
string localTimeString = utcDateTime.ToLocalTime().ToLongTimeString();
... но обе переменные возвращают значение «3:00:00 ВЕЧЕРА".
Если я запускаю тот же код в .NET 4.0, то вторая переменная - «4:00:00 PM». Это то, чего я ожидал бы.
Я не уверен, что мне не хватает, если это не будет одинаковым в обоих случаях?
DateTime, возвращенный из «ToLocalTime()», идентичен оригиналу, за исключением того, что «Вид» теперь «Локальный».
UPDATE:
Это, безусловно, связано с годом в приведенном выше примере. Если введен текущий год, то времена разные (и правильные), если что-либо до 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
Я нахожусь в Великобритании в настоящее время BST (GMT +1), и моя машина окна установлен правильно. –
Мой вопрос в том, что Mono также должен быть осведомлен о часовом поясе, но не кажется. И моно, и.чистый отчет, текущий часовой пояс SummerTime - BST –
. Я получаю правильное смещение для моего TZ (Центральная США), на 5 часов позади GMT. – Jason