2013-01-31 2 views
2

мне нужно, чтобы получить полностью определенный NSDateComponents экземпляр (т.е. с каландра, часовой пояс, и фактические значения даты и т.д. набор), которые будут использоваться в качестве StartDateComponents и DueDateComponents значений a EKReminder.Получение экземпляра NSDateComponents из NSDate (Or DateTime) в MonoTouch

Есть много answers here on SO, объясняющих, как это сделать из экземпляра календаря в obj-c. И проекты с открытым исходным кодом doing the same thing.

Однако я не могу понять, как сделать то же самое в MT. Класс NSCalendar не предоставляет никакого способа, связанного с селектором components:fromDate:.

Как люди имеют дело с DateTime/NSDate -> NSDateComponents в MT?

ответ

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); 
+0

Спасибо. Я закончил вручную создание «NSDateComponents» и установил параметры «Календарь», «Часовой пояс» и «Все целые числа даты/времени». Календарь и часовой пояс поступали от статических геттеров, возвращающих соответствующие значения по умолчанию. Я думаю, что все в порядке, я просто обеспокоен тем, что мне не хватает какого-то края, особенно связанного с тем, почему метод obj-c принимает эти перечисления NSCalendarUnit, так как мой подход не содержит этой информации и поэтому не может делать то же самое. Можете ли вы увидеть какие-либо проблемы с этим подходом, а не использовать метод ручного взаимодействия, который вы разместили? – Tyson

+1

Значения NSCalendarUnit предназначены только для того, чтобы точно указать, какие значения даты вы хотите использовать в компонентах даты. В моем примере вы получите NSDateComponents год и месяц (но не день/час/минута/секунда/и т. Д.). Если ваш код работает, когда вы его тестируете, не должно быть никаких проблем (просто убедитесь, что вы тестируете в разных часовых поясах). –

Смежные вопросы