在Objective-C中,从NSDate中提取子串的最佳方法是什么?

问题描述:

我目前提取专用年月日HH mm和ss从NSDate的是这样的: -在Objective-C中,从NSDate中提取子串的最佳方法是什么?

NSDate* dd = [NSDate date]; 
NSString* date = [dd description]; 
NSString* y = [date substringToIndex:4]; 
NSString* m = [[date substringFromIndex:5] substringToIndex:2]; 
NSString* d = [[date substringFromIndex:8] substringToIndex:2]; 
NSString* h = [[date substringFromIndex:11] substringToIndex:2]; 
NSString* mi = [[date substringFromIndex:14] substringToIndex:2]; 
NSString* s = [[date substringFromIndex:17] substringToIndex:2]; 
NSLog(@"%@, %@ %@ %@ %@ %@ %@,", date, y, m, d, h, mi, s); 

但似乎不可靠的,以我如locale怎么样?有没有更好的方法来做到这一点,还是这种现场证明?

您可以使用NSDateFormatter,have a look at Apple documentation

你应该给类NSDateFormatter了一枪。这个类的目的是做到这一点:创建本地化的,本地化的,用户首选的日期字符串。您不应该使用任何els向用户呈现日期。

+0

谢谢。 我看了一下NSDateFormatter,我认为这回答我的问题,例如NSDateFormatter会混淆格式以适应语言环境,所以通过暗示,上面的*不会*,我想要的是上面的ie ie *不会*改变语言环境变化(即这些值将保持在相同的位置“尽管”区域设置)? – 2010-08-27 15:58:16

+0

我不太确定你在问什么。如果它具有固定的日期格式,并不适应任何事情,那么最好使用'-descriptionWithCalendarFormat:timeZone:locale:'。您可以从文档中查看详细信息:http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/doc/uid/ 20000188 - descriptionWithCalendarFormat_timeZone_locale_请继续问你,你不明白的东西... – 2010-08-27 16:37:08

+0

再次感谢,这正是我需要,例如我将nil传递给它,它返回一个字符串,尽管区域设置在固定的位置。 E.g.我从另一个SDK /语言复制的代码有month(),day(),year()等,通过解析上面的字符串我可以重新创建这些函数,尽管不同的区域设置。 – 2010-08-30 10:25:37