2011-05-26 78 views
1

使用NSDateFormatter,這是我輸入:NSDateFormatter和setDateFormat:和SSS

00:20:11,026 (NSString) 

,這裏是輸出,我想:

"00:20:11,026"; (NSDate) 

,但我得到的是:

"1970-01-01 00:20:11 +0100" (NSDate) 
// SSS is missing and there is too much information... 

這裏是我編碼:

... 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"hh:mm:ss,SSS"]; 
[dateFormatter dateFromString:@"00:20:11,026"]; 
... 

回答

1

那麼,首先,你的NSDateFormatter就好了。

通過輸出判斷,它看起來像你只是NSLogging一個實際的NSDate對象,並期望格式能夠代表用於創建它的NSDateFormatter。無論你是否從NSDateFormatter獲取NSDate對象,所有NSDate對象的格式都是相同的。您擔心的「1970-01-01 00:20:11 +0100」字符串實際上是由NSDate的-description方法的實現提供的。

所以我的猜測是,雖然小數秒(SSS)從您的日誌語句中缺失,但它們實際上是存在的並且在NSDate對象中佔有。此外,「太多的信息」也僅僅是NSDate提供的默認描述的人工產物。我相當肯定你的實際NSDate包含你想要的所有信息。

+0

你說得對!爲什麼我沒有想到這個!現在,有沒有一種方法可以正確的方式進行nslogging?我必須強制重寫描述方法嗎? – jlink 2011-05-27 16:26:26

+0

那麼,通常如果你想獲得NSDate的特定字符串表示,你可以使用NSDateFormatter的'-stringFromDate:'方法。所以,而不是'NSLog(@「%@」,日期);',你會'NSLog(@「%@」,[dateFormatter stringFromDate:date]);'覆蓋-description可以工作,但它是overkill =) – 2011-05-27 16:32:11

+0

非常感謝你! – jlink 2011-05-27 17:21:22