Как мне создать NSDate от 1 августа 2005 года?Нашел NSDateComponent в Интернете, но кажется слишком сложным.
Другая возможность заключается в использовании NSDateComponents и NSCalendar. Например:
NSDateComponents
NSCalendar
NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setYear:2000]; [comps setMonth:1]; [comps setDay:1]; [comps setHour:0]; [comps setMinute:0]; [comps setSecond:0]; NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *startDate = [cal dateFromComponents:comps]; [cal release]; [comps release];
А как же:
[NSDate dateWithNaturalLanguageString:@"August 1st, 2005"];
NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init]; [myFormatter setDateFormat:@"M/d/yy"]; NSDate *myDate = [myFormatter dateFromString:@"August/01/05"];
Не пропустите тот факт, что эта дата будет 2 августа или 31 июля в других местах (и, возможно, что-то «странное», если не использовать григорианский календарь). Может быть, это не важно для вас и сейчас. Но вы должны знать об этом.
Вы думаете, это может вас не ударить? Я не был бы слишком уверен. Взгляните на NSCalendar, например, неправильно получая разницу в днях .
Введение в руководство по программированию даты и времени для какао
NSDateComponents *components = [[NSDateComponents alloc] init]; [components setDay:1]; [components setMonth:8]; [components setYear:2005]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *date = [gregorian dateFromComponents:components];
Это скорее зависит от вашего часового пояса, но в Гринвичу 1 августа 2005 года в 1 минуту после полуночи была отметка времени UNIX 1122854401. Так что вы можете написать ...
[NSDate dateWithTimeIntervalSince1970:1122854401];