【问题标题】:Convert (Date + Time) from NSString to NSDate and Add Some Hours将(日期+时间)从 NSString 转换为 NSDate 并添加一些小时
【发布时间】:2014-05-20 10:44:31
【问题描述】:

要求很简单。 我有2014-05-16 09:10am 格式的日期+时间。我想将其转换为NSDate,以便我可以添加/删除几个小时以获得一些计算的时间跨度。 在将此 NSString 值转换为 NSDate 时,我应该使用什么 dateFormat ?我试过关注

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"];
[dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm a"];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm"];
[dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm a"];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm ZZZZ"];

我在 SO 上进行了搜索,但无法得到确切的答案。我也尝试了上述解决方案,根据我的要求对其进行成型,但到目前为止没有任何收获。所以我在这里发布我的查询。

【问题讨论】:

    标签: ios nsdate nsdateformatter


    【解决方案1】:

    问题在于您的 Hours HH - 24 小时格式 && hh - 12 小时格式。

    根据您输入的日期字符串,这工作正常

     NSString* strdate = @"2014-05-16 09:10am";
    
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mma"];
        NSDate *date = [dateFormatter dateFromString:strdate];
    

    【讨论】:

      【解决方案2】:
       NSString* dateString = "2014-05-16 09:10am";
      NSDateFormatter* formt = [NSDateFormatter new];
      [formt setDateFormat:"yyyy-MM-dd  hh:mma"];   //hh - for 12 hours format
      NSDate* date = [formt dateFromString:dateString];
      
       NSLog(@"your date is ==%@",date);
      

      如果你需要增加几个小时

      NSTimeInterval  InEightHours = 8 * 60 * 60;  //mutiple the hours with minutes
      NSDate *dateHoursAhead = [date dateByAddingTimeInterval:InEightHours];
      
      NSLog(@"your final date is ==%@", dateHoursAhead);
      

      【讨论】:

      • 您的代码返回 nill 的日期。可能是因为您使用的是时间格式“yyyy-MM-dd hh:mm:a”,而不是“yyyy-MM-dd hh:mma”。但是,是的,您添加 Hours 的代码运行良好。所以我对此投了赞成票。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2014-06-26
      • 2011-05-18
      • 2011-04-18
      • 2016-09-01
      • 2013-07-22
      • 2011-10-20
      • 2013-01-25
      • 2017-01-16
      相关资源
      最近更新 更多