IOS:NSDateFormatter 用于意大利地区格式

标签 ios format nsdateformatter region

我已经使用美国地区格式测试了我的应用程序,日期显示正确。当区域更改为我现在居住的意大利时包含空值。

我的起始字符串日期是: - “2013 年 5 月 2 日下午 6:46:33”

正确的结果日期是: - “2013年2月5日18:46:33”

这是我的代码:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 dateFormatter setDateFormat:@"MM dd, yyyy hh:mm:ss a"];


 NSDate *dateFromString;
 dateFromString = [dateFormatter dateFromString:dataStr];

 [dateFormatter setDateFormat:@"dd/MM/yyyy HH:mm:ss"];
 dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];


 NSString *stringFromDate  = [dateFormatter stringFromDate:dateFromString];

最佳答案

如果您的起始字符串是 May 2, 2013 6:46:33 PM 那么您会遇到两个问题:

  1. 您的格式字符串 MM dd, yyyy hh:mm:ss a 与您的字符串不匹配。它需要是 MMMM dd, yyyy hh:mm:ss aMM 的使用用于数字月份。使用 MMM 作为月份缩写名称,使用 MMMM 作为完整月份名称。
  2. 您的日期字符串包含英文月份名称。如果您的设备设置为意大利,则它将无法正确解析月份名称,因为它预计月份名称为意大利语。

您的代码应该是:

NSString *dateStr = @"May 2, 2013 6:46:33 PM";
NSDateFormatter *inputDateFormatter = [[NSDateFormatter alloc] init];
[inputDateFormatter setDateFormat:@"MMMM dd, yyyy hh:mm:ss a"];
[inputDateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];

NSDate *dateFromString = [inputDateFormatter dateFromString:dataStr];

NSDateFormatter *outputDateFormatter = [[NSDateFormatter alloc] init];
[outputDateFormatter setDateFormat:@"dd/MM/yyyy HH:mm:ss"];

NSString *stringFromDate  = [outputDateFormatter stringFromDate:dateFromString];

关于IOS:NSDateFormatter 用于意大利地区格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343595/

相关文章:

iphone - 无效的 iPhone 应用程序二进制文件

c# - 如何删除负数的前导零

ios - iOS 上的歌词和和弦格式

swift - Swift 中来自服务器的日期

iphone - self.navigationController == 无

ios - 在 Parse 上将多个字段添加到 SignUp ViewController

iphone - 使 ImageView 出现在 Safari Top Sites 中

r - 在 R 中使用 lubridate 仅提取日期和月份并保留日期格式

ios - Nsdateformatter + 时区问题

ios - swift nsdate 给出错误的输出