将(日期+时间)从 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 以进行比较