设备当前区域设置后的格式化日期和时间

Pau*_*len 7 localization nsdate date-formatting ios

我有一个NSDate对象,我从中创建两个NSStrings:日期和时间.目前我将日期格式设置为20111031,时间格式为23:15.

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

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

我怎样才能做到这一点?

yuj*_*uji 37

以下内容应该足够了,因为默认情况下NSDateFormatter具有手机的默认语言环境:

NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSLog(@"%@",[dateFormatter stringFromDate:date]);
Run Code Online (Sandbox Code Playgroud)

仅供参考,美国,荷兰和瑞典的情况如下:

[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
Run Code Online (Sandbox Code Playgroud)

  • 我的荣幸!我只知道这一点,因为我花了三天时间来处理与NSDate相关的错误,并且学习更多关于这些东西的知识:P (2认同)

小智 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]);
Run Code Online (Sandbox Code Playgroud)