2013-02-12 63 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