我已经使用美国地区格式测试了我的应用程序,日期显示正确。当区域更改为我现在居住的意大利时包含空值。
我的起始字符串日期是: - “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
那么您会遇到两个问题:
- 您的格式字符串
MM dd, yyyy hh:mm:ss a
与您的字符串不匹配。它需要是MMMM dd, yyyy hh:mm:ss a
。MM
的使用用于数字月份。使用MMM
作为月份缩写名称,使用MMMM
作为完整月份名称。 - 您的日期字符串包含英文月份名称。如果您的设备设置为意大利,则它将无法正确解析月份名称,因为它预计月份名称为意大利语。
您的代码应该是:
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/