我有一个NSDate对象,我可以从中创建两个NSStrings:日期和时间。目前我将日期格式设置为20111031,时间格式为23:15。
我想要做的是将其格式化为设备(iPhone,iPad,iPod Touch)当前区域设置(不是语言!)。例如:
我该怎么做?
答案 0 :(得分:37)
以下内容应该足够了,因为默认情况下NSDateFormatter具有手机的默认语言环境:
NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSLog(@"%@",[dateFormatter stringFromDate:date]);
仅供参考,这是美国,荷兰和瑞典的情况:
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
NSLog(@"%@",[dateFormatter stringFromDate:date]);
// displays 10/30/11 7:09 PM
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"]];
NSLog(@"%@",[dateFormatter stringFromDate:date]);
// displays 30-10-11 19:09
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"sv_SE"]];
NSLog(@"%@",[dateFormatter stringFromDate:date]);
// displays 2011-10-30 19:09
答案 1 :(得分:7)
这里有很多很棒的代码片段。在我看来,国际日期格式(当我想要的只是日期,而不是时间)的一个更好的是这是因为手机知道设置中的语言环境语言:
NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:NSLocaleIdentifier]];
[dateFormatter setTimeStyle:NO];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSLog(@"%@",[dateFormatter stringFromDate:date]);