2013-10-30 84 views
0

是否可以通過NSLog打印NSDate對象而不打印小時,分鐘,秒?我想要它記錄的是這種格式yyyy-MM-dd,沒有小時,分鐘,秒。通過NSLog格式打印日期

我已經有了yyyy-MM-dd的NSDateFormatter,但是當我通過NSLog打印NSDate對象時,它仍然給我小時,分鐘,秒鐘。

有沒有辦法做到這一點,而不從日期對象創建另一個字符串,然後記錄該字符串?

+1

您可以使用NSDateFormatter生成您想要的任何格式。重點是,您必須將日期格式化爲字符串,而不是簡單地將格式化程序圍繞NSDate進行波動,並期望更改NSDate。 –

+0

感謝您的評論。我已經使用yyyy-MM-dd格式通過NSDateFormatter格式化了我的NSDate。但是,當我NSLog的NSDate對象,它仍然給我的小時,分​​鍾,秒 – aresz

+2

'NSDateFormatter'不會修改現有的NSDate'對象,也不會產生一個新的。它只是爲您提供從'NSDate'生成所需格式的'NSString'的能力。所以是的,每當你想把它打印到控制檯時,你都必須格式化它,或者如果日期沒有改變,就保留'NSString'。 –

回答

1

您可以繼承nsdate並覆蓋description方法以返回格式化的字符串。或者寫一個類別來執行相同的操作,只需在日誌語句中調用類別方法即可。

+1

是的,如果有人想在這方面做任何事情,那麼類別就是要走的路。 –

+0

值得注意的是,不推薦使用類別覆蓋方法。看到http://stackoverflow.com/questions/5272451/overriding-methods-using-categories-in-objective-c – ianyh

+0

我並不是想暗示:只是添加另一種方法,做他想做的事情 – pickwick

1

NSLog遇到目標c對象(通過%@標記)時,它調用方法-[NSObject description]並在其位置輸出結果字符串。 NSDate該方法的執行打印小時,分鐘和秒。讓它以不同方式打印的唯一方法是使用NSDateFormatter自己生成一個字符串。

+0

我明白了。這就說得通了。所以沒有其他方法可以做到這一點,而無需創建我自己的字符串。 – aresz