我正在使用UIDatePicker,我在将此数据转换为MonoTouch中的System.DateTime值时遇到问题 . 从NSDate到DateTime的转换存在问题,我已经解决了这个问题,但现在我看到如果您选择的日期不在同一个夏令时期间,那么您只需一小时 . 例如,如果我在2010年1月选择一个日期,我将有一个抵消问题 .
我想做的是当用户从UIDatePicker中选择日期/时间时,获取NSDate的年,月,日,小时和分钟值,然后使用这些值创建一个新的System.DateTime我们将始终确保获得与用户在UIDatePicker中看到的完全相同的日期值 .
如何将NSDate值分解为各种日期部分?
谢谢 .
3 回答
摆脱夏令时问题的一种简单方法是将时区设置为GMT . 然后UIDatePicker将忽略夏令时:
在Monotouch中,NSDate与DateTime的隐式转换非常好,但您必须注意NSDate始终是UTC时间,而DateTime默认设置为DateTimeKind.Unspecified(从数据库读取时)或DateTimeKind.Locale(使用DateTime设置时) . 今天) . 在没有复杂的时区计算的情况下进行转换的最佳方法是强制使用正确的DateTimeKind:
这比获取单独的日,月和年值更容易,更可靠 .
看来这可以使用
NSDateComponents
的实例来完成 . 已从Date Components and Calendar Units复制以下内容:好的,通过使用上面的代码,您可以将NSDate转换为DateTime,就像通常在.Net World上做的那样:)然后使用> DateTimeToNSDate,您可以将其还原为NSDate
希望这可以帮助
亚历克斯