NSDate Вопрос - PullRequest
       26

NSDate Вопрос

1 голос
/ 26 июля 2010

Как мне создать NSDate от 1 августа 2005 года?Нашел NSDateComponent в Интернете, но кажется слишком сложным.

Ответы [ 6 ]

6 голосов
/ 26 июля 2010

Другая возможность заключается в использовании 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];    
4 голосов
/ 26 июля 2010

А как же:

[NSDate dateWithNaturalLanguageString:@"August 1st, 2005"];
3 голосов
/ 26 июля 2010
NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init];
[myFormatter setDateFormat:@"M/d/yy"];
NSDate *myDate = [myFormatter dateFromString:@"August/01/05"];
0 голосов
/ 26 июля 2010

Не пропустите тот факт, что эта дата будет 2 августа или 31 июля в других местах (и, возможно, что-то «странное», если не использовать григорианский календарь). Может быть, это не важно для вас и сейчас. Но вы должны знать об этом.

Вы думаете, это может вас не ударить? Я не был бы слишком уверен. Взгляните на NSCalendar, например, неправильно получая разницу в днях .

0 голосов
/ 26 июля 2010

Введение в руководство по программированию даты и времени для какао

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];
0 голосов
/ 26 июля 2010

Это скорее зависит от вашего часового пояса, но в Гринвичу 1 августа 2005 года в 1 минуту после полуночи была отметка времени UNIX 1122854401. Так что вы можете написать ...

[NSDate dateWithTimeIntervalSince1970:1122854401];
...