Создать NSDate Monotouch
Я пытаюсь взять строку даты и превратить ее в определенный NSDate (например, 1 июля 1981 года), но я не вижу и методы для установки даты. Кто-нибудь знает, как это сделать? Возможно, преобразовать объект DateTime в NSDate?
Ответы
Ответ 1
Самый простой способ - установить его из DateTime.
ПЕРЕСМОТР: Операторы преобразования NSDate теперь явны, а не подразумеваются больше! Я обновил приведенный ниже пример.
Если вы посмотрите на прототип NSDate, вы найдете два оператора:
public static explicit operator NSDate(DateTime dt);
public static explicit operator DateTime(NSDate d);
Эти два будут делать конверсию для вас.
Явное преобразование NSDate в DateTime и из 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);
Ответ 2
public static DateTime NSDateToDateTime(MonoTouch.Foundation.NSDate date)
{
return (new DateTime(2001,1,1,0,0,0)).AddSeconds(date.SecondsSinceReferenceDate);
}
public static MonoTouch.Foundation.NSDate DateTimeToNSDate(DateTime date)
{
return MonoTouch.Foundation.NSDate.FromTimeIntervalSinceReferenceDate((date-(new DateTime(2001,1,1,0,0,0))).TotalSeconds);
}
Это должно помочь
Алекс
Ответ 3
Попробуйте следующее:
private static NSDate DateTimeToNSDate(DateTime date)
{
NSCalendar calendar = NSCalendar.CurrentCalendar;
NSDateComponents comps = new NSDateComponents();
comps.Day = date.Day;
comps.Month = date.Month;
comps.Year = date.Year;
comps.Minute = date.Minute;
comps.Hour = date.Hour;
return calendar.DateFromComponents(comps);
}
Ответ 4
public NSDate ConvertDateTimeToNSDate(DateTime date)
{
DateTime newDate = TimeZone.CurrentTimeZone.ToLocalTime(
new DateTime(2001, 1, 1, 0, 0, 0) );
return NSDate.FromTimeIntervalSinceReferenceDate(
(date - newDate).TotalSeconds);
}
public DateTime ConvertNsDateToDateTime(NSDate date)
{
DateTime newDate = TimeZone.CurrentTimeZone.ToLocalTime(
new DateTime(2001, 1, 1, 0, 0, 0) );
return newDate.AddSeconds(date.SecondsSinceReferenceDate);
}
Источник: https://theweeklybyte.wordpress.com/2014/05/27/convert-datetime-to-nsdate-and-back/
Ответ 5
Вы хотите посмотреть NSDateFormatter класс:)
Ваш код будет выглядеть примерно так.,.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy HH:mm"];
NSDate *parsed = [formatter dateFromString:dateString];
S
PS Пример, свободно скопированный из этого вопроса:)