我需要像这样转换NSString:“2012-08-01T12:43:35 + 02:00”到NSDate,但我找不到好的格式......
我使用此类别代码将NSString转换为NSDate:
[NSDate dateFromString:@"2012-08-01T12:43:35+02:00" withFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"];
+ (NSDate*) dateFromString:(NSString*)dateString withFormat:(NSString*)format
{
return [self dateFromString:dateString withFormat:format andLocaleIdentifier:@"fr"];
}
+ (NSDate*) dateFromString:(NSString*)dateString withFormat:(NSString*)format andLocaleIdentifier:(NSString*)localeIdentifier
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:format];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];
[dateFormatter setLocale:locale];
[locale release];
NSDate *returnDate = [dateFormatter dateFromString:dateString];
[dateFormatter release];
return returnDate;
}
我尝试了所有格式,但没有人是正确的......
yyyy-MM-dd'T'HH:mm:ss >> 2012-08-04T18:05:14个
yyyy-MM-dd'T'HH:mm:ssv >> 2012-08-04T18:05:14法国时间
yyyy-MM-dd'T'HH:mm:ssvv >> 2012-08-04T18:05:14GMT + 02:00
yyyy-MM-dd'T'HH:mm:ssvvv >> 2012-08-04T18:05:14GMT + 02:00
yyyy-MM-dd'T'HH:mm:ssV > 2012-08-04T18:05:14CEST
yyyy-MM-dd'T'HH:mm:ssVV > 2012-08-04T18:05:14GMT + 02:00
yyyy-MM-dd'T'HH:mm:ssVVV > 2012-08-04T18:05:14GMT + 02:00
yyyy-MM-dd'T'HH:mm:ssVVVV > 2012-08-04T18:05:14法国时间
yyyy-MM-dd'T'HH:mm:ssz >> 2012-08-04T18:05:14GMT + 02:00
yyyy-MM-dd'T'HH:mm:sszz >> 2012-08-04T18:05:14GMT + 02:00
yyyy-MM-dd'T'HH:mm:sszzz >> 2012-08-04T18:05:14GMT + 02:00
yyyy-MM-dd'T'HH:mm:sszzzz >> 2012-08-04T18:05:14中欧夏令时间
yyyy-MM-dd'T'HH:mm:ssZ >> 2012-08-04T18:05:14 + 0200
yyyy-MM-dd'T'HH:mm:ssZZ > 2012-08-04T18:05:14 + 0200
yyyy-MM-dd'T'HH:mm:ssZZZ > 2012-08-04T18:05:14 + 0200
yyyy-MM-dd'T'HH:mm:ssZZZZ > 2012-08-04T18:05:14GMT + 02:00
我该怎么办?
有正则表达式
NSString* dateString = @"2012-08-01T12:43:35+02:00";
NSMutableString* dateWithoutColonString = [dateString mutableCopy];
NSRegularExpression* lastColonRegex = [NSRegularExpression
regularExpressionWithPattern:@"([\\+\\-][0-9][0-9]):"
options:NSRegularExpressionCaseInsensitive
error:nil];
[lastColonRegex replaceMatchesInString:dateWithoutColonString
options:NSRegularExpressionCaseInsensitive
range:NSMakeRange(0, [dateString length])
withTemplate:@"$1"];
答案 0 :(得分:1)
使用[formatter setDateFormat:@“yyyy-MM-dd'T'HH:mm:ssZZZZZ”];
答案 1 :(得分:0)
Apple讨论了parsing Internet-style dates,它与您的代码类似,但有一些更改。它始终使用en_US_POSIX
区域设置,并使用[NSTimeZone timeZoneForSecondsFromGMT:0]
而不是您的本地时区进行解析。试一试,看看结果是否适合你。