我需要的NSString轉換是這樣的:「2012-08-01T12:43:35 + 02:00」到NSDate的,但我沒有找到好的格式...如何將NSString轉換爲NSDate格式:「2012-08-01T12:43:35 + 02:00」?
我用這個類別代碼轉換的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:14France時間
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:14France時間
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 :14Central歐洲夏令時的
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
我該怎麼辦?
[編輯]首先難看溶液:
- 刪除最後結腸與正則表達式
- 這種格式轉換字符串「YYYY-MM-dd'T'HH:MM:ssZZZ 「
有正則表達式
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"];
如果您發現任何問題的解決方案,請讓我知道 – 2013-10-08 10:41:10
另請參見:[使用NSDateFormatter解析ISO 8601](http://stackoverflow.com/q/10057456) – 2014-09-09 08:48:02