【问题标题】:Converting date from one format to other returns nil in objective c在目标 c 中将日期从一种格式转换为其他返回 nil
【发布时间】:2017-12-18 10:29:08
【问题描述】:

我正在尝试将“2017-12-05T00:00:00-0500”格式的日期转换为 Dec 05 。为此,我使用以下代码,但每次都返回 nil。我不知道这段代码有什么问题。请检查代码并让我知道我的错误。任何在这个方向上的指导将不胜感激。提前致谢!

 [dtF setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"];
        NSDate *d = [dtF dateFromString:[dic valueForKey:@"weight_date"]];
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@" YYYY-MM-DD hh:mm:s"];
        NSString *st = [dateFormat stringFromDate:d];
        NSLog(@"%@",st);

【问题讨论】:

  • 你从这里得到什么 OP NSDate *d
  • 您是否检查过d 实际上包含转换后的日期
  • 它返回 nil。
  • @Prez 表示你的原始格式yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ 不正确

标签: ios objective-c date-format


【解决方案1】:
NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dtF setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *d = [dtF dateFromString:[dic valueForKey:@"weight_date"]];//@"2017-12-05T00:00:00-05:00"
[dateFormat setDateFormat:@"MMM dd"];
NSString *st = [dateFormat stringFromDate:d];
NSLog(@"%@",st);

【讨论】:

    【解决方案2】:

    您的日期格式错误我已做出更改,请检查答案。

    检查下面的代码,我已将您的 dic 替换为您发布的相关日期:

    NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
    [dtF setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
    NSDate *d = [dtF dateFromString:@"2017-12-05T00:00:00-0500"];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MMM dd"];
    NSString *st = [dateFormat stringFromDate:d];
    NSLog(@"%@",st);
    

    【讨论】:

    • 我没有这样做。
    【解决方案3】:

    当我测试你的代码时,我知道 dtf 没有返回值 d is nil

    所以 dtf 的格式应该是

    yyyy-MM-dd'T'HH:mm:ss-SSSS
    

    然后用这个替换rest。

    NSDate *d = [dtF dateFromString:[dic valueForKey:@"weight_date"]];
    [dtF setDateFormat:@"MMM dd"];
    NSString *st = [dtF stringFromDate:d];
    NSLog(@"%@",st);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      相关资源
      最近更新 更多