Самый простой способ - установить его из DateTime.
ПЕРЕСМОТР: Операторы преобразования NSDate теперь явные, а не неявные! Я обновил пример ниже.
Если вы посмотрите на прототип NSDate, вы найдете два оператора:
public static explicit operator NSDate(DateTime dt);
public static explicit operator DateTime(NSDate d);
Эти двое сделают преобразование за вас.
Явное преобразование NSDate в DateTime и обратно весьма неплохо, но вы должны знать, что NSDate всегда является временем UTC, а DateTime по умолчанию имеет значение DateTimeKind.Unspecified (при чтении из базы данных) или DateTimeKind.Locale (если установлено с DateTime.Today).
Лучший способ конвертировать без сложных вычислений часового пояса - принудительно установить правильный DateTimeKind:
// Set NSDate:
DateTime date = DateTime.Parse("1981-07-01")
NSDate nsDate = (NSDate)DateTime.SpecifyKind(date, DateTimeKind.Utc);
// Get DateTime from NSDate:
date = DateTime.SpecifyKind((DateTime)nsDate, DateTimeKind.Unspecified);