7

我有一个 NSDate 对象,我从中制作了两个 NSString:日期和时间。目前我将日期格式化为 20111031,时间格式化为 23:15。

我想做的是将其格式化为设备(iPhone、iPad、iPod Touch)的当前区域设置(不是语言!)。例如:

  • 设置为美国地区的设备将显示(从我的头顶)10.31.11 和时间 11:15 pm
  • 设置为荷兰地区的设备将显示:31-10-2011 和时间 23.15
  • 设置为瑞典语区域的设备将显示:2001-10-31 和时间 23:15

我怎样才能做到这一点?

4

2 回答 2

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
于 2011-10-30T19:12:35.503 回答
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]);
于 2013-07-17T14:24:14.837 回答