Как я NSLog NSDate?

С кодом, вставленным ниже, я пытаюсь зарегистрировать NSDate. Что я здесь делаю неправильно?

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd"];
NSDate *todaysDate;
todaysDate = [NSDate date];
NSLog(@"Todays date is %@",formatter);

Ответ 1

Все, что вам нужно сделать, это:

  NSLog(@"Todays date is %@",[formatter stringFromDate:todaysDate]);

Ответ 2

Что вы делаете неправильно, вы не сделали ничего, чтобы связать дату с форматированием. Итак, вы хотели бы сделать что-то вроде этого:

NSLog(@"Todays date is %@", [formatter stringFromDate:todaysDate];

NSDate ничего не знает о форматировании (только информация о дате), а NSDateFormatter ничего не знает о датах, просто как их форматировать. Таким образом, вы должны использовать такие методы, как -stringFromDate:, чтобы фактически форматировать дату для очень удобного для пользователя отображения.

Если вам нужно просто посмотреть информацию о дате и не нуждаться в определенном формате, вам не нужен форматтер для регистрации даты:

NSLog(@"Todays date is %@", todaysDate);

Будет работать отлично, чтобы дать вам -description объекта NSDate. Я бы не использовал это для чего-либо, что вы показываете пользователю (используйте для этого NSDateFormatter), но это удобно, если вы просто отлаживаете и должны видеть информацию об объекте NSDate.

Ответ 3

Полный пример:

    NSDate *today = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"YYYY-MM-dd"];
    NSLog(@"%@",[formatter stringFromDate:today]);
    [formatter release];