2013-02-12 61 views
3

我知道NSDateFormatter,但我希望它像「昨天12:35」,我只是把它解釋爲兩個日期字符串?iOS中的日期和時間格式

[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
[dateFormatter setDateStyle:NSDateFormatterShortStyle]; 
[dateFormatter setLocale: [NSLocale autoupdatingCurrentLocale]]; 

[dateFormatter setDoesRelativeDateFormatting:YES]; 

[dateFormatterTime setLocale:[NSLocale systemLocale]]; 
[dateFormatterTime setDateFormat:@"HH:mm"]; 

NSString *dateString = [NSString stringWithFormat:@"%@ %@", [dateFormatter stringFromDate:dateParsed], [dateFormatterTime stringFromDate:dateParsed ] ]; 

任何想法?

+0

看一看偉大[FormatterKit(https://github.com/mattt/FormatterKit)由馬特·湯普森 – rckoenes 2013-02-12 15:35:30

回答

2

這是我可以通過尊重語言環境來做的最好的。

NSDateFormatter *dateFormatter = NSDateFormatter.new; 
dateFormatter.doesRelativeDateFormatting = YES; 
dateFormatter.dateStyle = NSDateFormatterShortStyle; 
dateFormatter.timeStyle = NSDateFormatterShortStyle; 

NSDate *today = NSDate.new; 
// "Today, 11:40 AM" 
NSLog(@"%@", [dateFormatter stringFromDate:today]); 

NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:60*60*24]; 
// "Tomorrow, 11:40 AM" 
NSLog(@"%@", [dateFormatter stringFromDate:tomorrow]); 

NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(60*60*24)]; 
// "Yesterday, 11:40 AM" 
NSLog(@"%@", [dateFormatter stringFromDate:yesterday]); 

NSDate *dayAfter = [NSDate dateWithTimeIntervalSinceNow:(60*60*24)*2]; 
// "2/14/13, 11:40 AM" 
NSLog(@"%@", [dateFormatter stringFromDate:dayAfter]); 
+1

不能使用86400秒意味着一天。隨着一年中不同日期的世界時間變化,它不起作用。不過你可以使用NSCalendar。 – Fogmeister 2013-02-12 16:48:43

+1

此代碼用於演示我使用的NSDateFormatter,而不是計算未來和過去日期的方式。請@Fogmeister不要投我的答案,因爲它解決了NSDateFormatter問題。 – 2013-03-15 19:03:41