2012-02-06 127 views
1

我有一個NSString喜歡Mon Feb 06 20:02:17 +0000 2012。我想以更短的方式編寫它,例如:DD-MM-YY, HH:MM。我認爲也許我可以將其轉換爲NSDate,再次轉換爲較短的NSString,但我不知道如何將這種奇怪的日期格式轉換爲NSDate。NSString與日期:減少日期大小

如果您需要更多信息,請問我。 謝謝!

+0

檢查出來:[解析日期格式在可可](http://stackoverflow.com/questions/399527/parsing-unsupported-date-formats-in-via-cocoas-nsdate) – Matt 2012-02-06 20:45:34

回答

3

你需要使用一個NSDateFormatter告訴NSDate你想它,那麼你可以在兩個這樣之間轉換格式的原始日期是在和格式:

NSString *oldDate = @"Mon Feb 06 20:02:17 +0000 2012"; 
NSString *oldFormat = @"EEE MMM dd HH:mm:ss ZZ yyyy"; 

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:oldFormat]; 

NSDate *date = [dateFormatter dateFromString:sourceString]; 

NSString *newFormat = @"dd-MM-yy, HH:mm"; 

[dateFormatter setDateFormat:newFormat]; 
NSString *newDate = [dateFormatter stringFromDate:date]; 
1

試用NSDateFormatter

您可以使用其方法之一轉換成NSDate的:

- (NSDate *)dateFromString:(NSString *)string 

然後將其轉換成任何你想要使用NSDateFormatter。

編輯:其實NSDate的有一個類的方法,所以你可以檢查,以及:

+ (id)dateWithString:(NSString *)aString 
+0

我知道它,但我已經嘗試它和NSDate給出零 – Garoal 2012-02-06 20:52:48

3

也有類似的問題和StackOverflow的答案和一個教程,可以幫助你:

教程: http://iosdevelopertips.com/cocoa/date-formatters-examples-take-3.html

類似的問題:

EDIT

NSString *dateStr = @"20081122"; 

// Convert string to date object 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyyMMdd"]; 
NSDate *date = [dateFormat dateFromString:dateStr]; 

// Convert date object to desired output format 
[dateFormat setDateFormat:@"EEEE MMMM d, YYYY"]; 
dateStr = [dateFormat stringFromDate:date]; 
+0

但任何他們有確切的日期格式,我有 – Garoal 2012-02-06 20:53:36

+0

因爲你知道確切的日期格式,它會更容易。我編輯了我的答案以顯示它。 – Canopus 2012-02-06 20:57:27