从设置应用程序设置区域时的日期转换问题

时间:2013-05-08 10:20:43

标签: iphone ios ios6

我想将字符串转换为日期。它不适用于以下情况。 我正在使用设置应用程序来设置区域。在设置中,转到常规,转到国际,转到地区格式,转到西班牙语然后设置阿根廷。 设置这些参数后,我尝试将字符串转换为日期。它没有转换字符串到目前为止。请帮忙。

编辑:这是我的代码。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ; 
[formatter setDateFormat:@"MM/dd/yyyy h:mma"];
 NSDate *_date = [formatter dateFromString:strDate];

2 个答案:

答案 0 :(得分:0)

当您将String转换为Date时,String必须是西班牙语(阿根廷)格式才能让NSDateFormatter理解。

在您的示例中,您传递的日期为“ 05/29/2012 6:15 PM

但是,在西班牙语(阿根廷),日期字符串应为“ 05/29/2012 6:15 p.m。

如果您动态获取此日期,最好是删除日期中的AM / PM组件并尝试以24小时格式获取日期字符串

答案 1 :(得分:0)

This document解释了您的体验

简而言之,使用美国语言环境设置日期格式,如果您希望向用户显示日期,请将日期转换为字符串。

例如:

NSString *strDate  = @"05/29/2012 6:15PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateFormat:@"MM/dd/yyyy h:mma"];
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];

NSDate *_date = [formatter dateFromString:strDate];

并向用户显示日期:

NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *newDate = [formatter2 stringFromDate:_date];

进入应用程序的日期字符串通常应转换为标准格式,如果您想要向用户显示日期,则需要将日期格式化为字符串 - 将它们视为单独的步骤:

  1. 将字符串设置为合理的日期格式
  2. 使用所需格式
  3. 获取用户区域设置的日期