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

时间:2014-05-20 10:44:32

标签: ios nsdate nsdateformatter

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

[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,但无法得到确切的答案。我也尝试过按照我的要求塑造它们,但到目前为止还没有增加。所以我在这里发帖子。

2 个答案:

答案 0 :(得分:1)

问题在于您的营业时间HH - 24小时格式&& ...... - 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];

答案 1 :(得分:1)

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