将(日期+时间)从 NSString 转换为 NSDate 并添加一些小时

Posted

技术标签:

【中文标题】将(日期+时间)从 NSString 转换为 NSDate 并添加一些小时【英文标题】:Convert (Date + Time) from NSString to NSDate and Add Some Hours 【发布时间】: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 上进行了搜索,但无法得到确切的答案。我也尝试了上述解决方案,根据我的要求对其进行成型,但到目前为止没有任何收获。所以我在这里发布我的查询。

【问题讨论】:

【参考方案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 的代码运行良好。所以我对此投了赞成票。谢谢。

以上是关于将(日期+时间)从 NSString 转换为 NSDate 并添加一些小时的主要内容,如果未能解决你的问题,请参考以下文章

将 datetime64[ns] 索引转换为日期 pandas 以进行比较

环回将日期之类的字符串转换为日期,如何防止它

将 NSString 转换为 NSURL 时面临的问题

在 Xcode Playground 中将 NSString 转换为 CString

将 NSDate 转换为 NSString

js把时间戳转换为普通日期格式