2013-08-29 15 views
12

在下面粘貼的代碼中,我試圖記錄一個NSDate。我在這裏做錯了什麼?我如何NSLog NSDate?

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

'的NSLog(@ 「的日期%@」,todaysDate);' - 當然的日期將在長格式和UTC時區記錄,所以你需要了解那。要使用格式化程序,您可以執行'NSLog(@「日期爲%@」,[formatter stringFromDate:todaysDate]);'。 –

+1

不相關,但在「YYYY」而不是「YYYY」中使用'yyyy'。詳情請參閱http://stackoverflow.com/questions/3063068/weird-behavior-when-creating-an-nsdate-of-january-the-1st-and-the-2nd。 – Anna

回答

15

所有你需要做的是:

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

你在做什麼錯的是你有沒有做過任何與格式的日期相關聯。所以,你會想要做這樣的事情:

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

NSDate不知道什麼格式(只是日期信息),以及NSDateFormatter並不真正知道什麼是日期,只是如何將它們格式化。所以你必須使用像-stringFromDate:這樣的方法來實際設置格式化日期,以便可讀的顯示。

如果你需要的是剛剛看到最新的信息,不需要特定的格式,你不需要格式化日誌日期:

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

將罰款給你-descriptionNSDate對象。我不會將它用於顯示給用戶的任何內容(請使用NSDateFormatter),但如果您只是在調試並需要查看有關NSDate對象的信息,則此功能非常方便。

1

完整的示例:

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