2

我需要获取一个完全定义的NSDateComponents实例(即设置了日历、时区和实际日期值等),以用作EKReminder的StartDateComponentsDueDateComponents值。

这里有很多关于 SO 的答案,解释了如何从 obj-c 中的日历实例中做到这一点。和开源项目做同样的事情

但是我似乎无法弄清楚如何在 MT 中做同样的事情。NSCalendar类不公开任何与选择器相关的方法components:fromDate:

人们是如何处理 MT 中的 DateTime/NSDate -> NSDateComponents 的?

4

1 回答 1

2

这些 API 在 MonoTouch 中实际上是缺失的——但我现在已经添加了它们,因此您将在未来的版本中找到它们。

同时您可以components:fromDate:手动调用:

var calendar = new NSCalendar (NSCalendarType.Gregorian);
var date = (NSDate) DateTime.Now;
var ptr = Messaging.IntPtr_objc_msgSend_UInt32_IntPtr (calendar.Handle, Selector.GetHandle ("components:fromDate:"), (uint) (NSCalendarUnit.Year | NSCalendarUnit.Month), date.Handle);
var comps = new NSDateComponents (ptr);

Console.WriteLine (comps.Year);
于 2013-01-31T23:58:06.230 回答