【问题标题】:Date in NSString format returning null iOS?NSString 格式的日期返回 null iOS?
【发布时间】:2016-07-05 16:02:36
【问题描述】:

我正在以 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

再次为空

【问题讨论】:

  • 我应该如何纠正这个???
  • 比较字符串和格式。它们不匹配。

标签: ios objective-c nsstring nsdate


【解决方案1】:

首先,一行:

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];

【讨论】:

  • 是的,它的工作。如果我只想要日期部分,我该怎么办?
猜你喜欢
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2013-01-03
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多