如何使用以下格式将NSString转换为NSDate:“2012-08-01T12:43:35 + 02:00”? [英] How to convert NSString to NSDate with this format : "2012-08-01T12:43:35+02:00"?

查看:130
本文介绍了如何使用以下格式将NSString转换为NSDate:“2012-08-01T12:43:35 + 02:00”?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要转换NSString如下:2012-08-01T12:43:35 + 02:00到NSDate,但我没有找到好的格式...

I need to convert NSString like this : "2012-08-01T12:43:35+02:00" to NSDate, but i don't find the good format...

我使用这个类别代码将NSString转换为NSDate:

I use this category code to convert NSString to 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;
}

我尝试了所有的格式,但没有人是正确的...

I tried all the format i can, but no one is correct...

yyyy-MM-dd'THH: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'THH: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

yyyy-MM-dd'T'HH:mm:ss >> 2012-08-04T18:05:14
yyyy-MM-dd'T'HH:mm:ssv >> 2012-08-04T18:05:14France Time
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 Time
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 European Summer Time
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

我该怎么办?


  1. 使用正则表达式删除最后一个冒号

  2. 转换此格式的字符串yyyy-MM-dd'THH: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"];


推荐答案

使用[formatter setDateFormat:@yyyy-MM- dd'T'HH:mm:ssZZZZZ];

use [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];

这篇关于如何使用以下格式将NSString转换为NSDate:“2012-08-01T12:43:35 + 02:00”?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆