本地化的 NSDateFormatter

Localized NSDateFormatter

在其他人回答的一些问题的帮助下,我设法让我的 NSDateFormatter 在不同的语言环境中处理字符串。目前我的代码如下:

dateFormatter = [[NSDateFormatter alloc] init];
                [dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
                [dateFormatter setDateFormat:@"MMM dd, yyyy HH:mm:ss a"];
//myDate = [[NSDate alloc] init]; --- unnecesary as marked by @rmaddy
myDate = [dateFormatter dateFromString:dateString];
NSLog(@"%@ ==== %@",dateString, myDate);

在控制台中给我以下结果:

Nov 11, 2011 11:11:00 AM ==== 2011-11-10 23:11:00 +0000
Feb 22, 2222 10:22:00 PM ==== 2222-02-22 11:22:00 +0000
Dec 12, 2012 12:12:00 PM ==== 2012-12-12 11:12:00 +0000
Dec 22, 2012 10:22:00 PM ==== 2012-12-22 11:22:00 +0000

希望我只是忽略了一些简单的事情,但我看不出我错在哪里以及为什么将 10:22 PM 更改为 11:22 +0000 或 11:11 AM进入 23:11

您的日期格式为 24 小时(大写 H),只需将其更改为使用 12 小时(小写 h)即可:

[dateFormatter setDateFormat:@"MMM dd, yyyy hh:mm:ss a"]

您可以找到日期格式模式here