我已经使用regiorn format USA测试了我的应用程序并且日期显示正确。当地区改为我居住的意大利时,现在包含空值。
我的首发字符串日期为: - “2013年5月2日下午6:46:33”
结果日期正确为: - “02/05/2013 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];
答案 0 :(得分:2)
如果您的初学者字符串为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];
答案 1 :(得分:0)
使用此:
NSDate* sourceDate = your_date
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];
希望它对你有所帮助。