返回 null iOS 的 NSString 格式的日期?

Date in NSString format returning null iOS?

我正在获取 NSString 格式的日期“2016-03-16T00:00:00.000+05:30” 我正在使用以下方法将 NSString 日期转换为正确的 NSDate 格式并返回 null。

NSString *dateString = @"2016-03-16T00:00:00.000+05:30";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ssZZZ"];
NSDate *dateFromString = [[NSDate alloc] init];

dateFromString = [dateFormatter dateFromString:dateString];

//dateFromString returns null.

请帮忙

我已经用这个代码更新了

    NSString *strDateFor = [polygon valueForKey:@"effective_from"];
    NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
    [dateformate setDateFormat:@"yyyy-MM-dd 'T' HH:mm:ss ZZZZ"];
    NSDate *date = [dateformate dateFromString:strDateFor];
    NSLog(@"date : %@",date); //null
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
    [dateFormat setDateFormat:@"dd-MM-yyyy"];
    NSString *strDate = [dateFormat stringFromDate:date];
    NSLog(@"The strDate is - %@", strDate); //null

再次为空

首先,行:

NSDate *dateFromString = [[NSDate alloc] init];

没有任何意义,因为您没有使用您在此处创建的 NSDate 实例。别管它了。

其次,如果您像这样解析日期字符串,总是设置日期格式化程序的locale。默认情况下,NSDateFormatter 使用用户当前的语言环境,它可以是任何东西,所以你不能依赖它。您可能需要 en_US_POSIX 语言环境,因为它保证将来不会更改。

第三,你的日期格式字符串是错误的,因为你没有指定小数秒(.SSS)。

这个有效:

NSString *dateString = @"2016-03-16T00:00:00.000+05:30";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSZZZ"];
NSDate *dateFromString = [dateFormatter dateFromString:dateString];