我需要将Cocoa NSDate
转换为C# DateTime
,反之亦然。
我使用下面的方法来实现这一点:
public static DateTime NSDateToDateTime (Foundation.NSDate date)
{
DateTime reference = TimeZone.CurrentTimeZone.ToLocalTime (
new DateTime (2001, 1, 1, 0, 0, 0));
return reference.AddSeconds (date.SecondsSinceReferenceDate);
}
public static Foundation.NSDate DateTimeToNSDate (DateTime date)
{
DateTime reference = TimeZone.CurrentTimeZone.ToLocalTime (
new DateTime (2001, 1, 1, 0, 0, 0));
return Foundation.NSDate.FromTimeIntervalSinceReferenceDate (
(date - reference).TotalSeconds);
}
但事实证明,这种方式并不包括夏令时。
例如,DateTime
对象中的时间为DST中的5AM,则返回时间为6AM的NSDate
。
3条答案
按热度按时间bz4sfanl1#
我很肯定这是一种过时的方法。现在可以将NSDate直接转换为DateTime。
wa7juj8i2#
基于以下方面的输入:https://forums.xamarin.com/discussion/27184/convert-nsdate-to-datetime
Local Time
在Daylight Saving
期间会发生变化。因此,始终转换为UTC
进行计算,然后根据需要转换为Local time
。vcirk6k63#
直接转换为NSDate时存在creepy bug
我的解决方案是:
我希望这能帮上忙