Nsdateformatter以选定手机的语言返回我的日期.它能一直给我回英语吗?

bre*_*ehg 21 iphone nsdate nsdateformatter ios4 ios5

我正在使用dateformatter在我的应用程序中获取日期和时间.但是当我更改手机的语言时,我遇到了一个问题.日期格式化器返回我选择的手机语言的日期和时间,因为我们的应用程序崩溃,因为我们不支持多种语言.

请找到以下代码段:

NSDate *date=[NSDate date];
NSDateFormatter *objTimeFotmatter=[[NSDateFormatter alloc]init];
[objTimeFotmatter setDateFormat:@"HH:mm"];

NSDateFormatter *objDayFotmatter=[[NSDateFormatter alloc]init];
[objDayFotmatter setDateFormat:@"EEEE"];

NSString *objTime=[objTimeFotmatter stringFromDate:date];
NSString *objDay=[objDayFotmatter stringFromDate:date];

NSLog(@"objTime=%@",objTime);
NSLog(@"objDay=%@",objDay);
Run Code Online (Sandbox Code Playgroud)

当我选择手机语言作为古吉拉特语(印度)时,我使用nslog看到的输出如下,

2011-11-24 11:23:20.221 Belkin_Plugin[1110:707] objTime=??:??
2011-11-24 11:23:20.227 Belkin_Plugin[1110:707] objDay=???????
Run Code Online (Sandbox Code Playgroud)

Ila*_*ian 47

将以下行添加到dateformatter.

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];
Run Code Online (Sandbox Code Playgroud)

在你的情况下,

NSDateFormatter *objTimeFotmatter=[[NSDateFormatter alloc]init];
[objTimeFotmatter setDateFormat:@"HH:mm"];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[objTimeFotmatter setLocale:usLocale];
Run Code Online (Sandbox Code Playgroud)

同样适用于所有日期格式.