需要帮助显示每30分钟的时间间隔,假设当前时间是上午11:45 时间间隔应为:中午12:00,下午12:30,下午01:00,下午01:30,下午02:00,下午02:30 ……晚上10:30. NSString *time = @"10.30 pm"; NSDate *date1; N
时间间隔应为:中午12:00,下午12:30,下午01:00,下午01:30,下午02:00,下午02:30 ……晚上10:30.
NSString *time = @"10.30 pm";
NSDate *date1;
NSDate *date2;
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh.mm a"];
date1 = [formatter dateFromString:time];
date2 = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];
}
NSTimeInterval interval = [date1 timeIntervalSinceDate: date2];//[date1 timeIntervalSince1970] - [date2 timeIntervalSince1970];
int hour = interval / 3600;
int minute = (int)interval % 3600 / 60;
NSLog(@"%@ %dh %dm", interval<0?@"-":@"+", ABS(hour), ABS(minute));
此代码返回当前时间与给定时间的差异,如何进一步处理.
你可以做点什么,NSString *startTime = @"02:00 AM";
NSString *endTime = @"11:00 AM";
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"hh:mm a"];
NSDate* fromTime = [timeFormat dateFromString:startTime];
NSDate* toTime = [timeFormat dateFromString:endTime];
NSDate *dateByAddingThirtyMinute ;
NSTimeInterval timeinterval = [toTime timeIntervalSinceDate:fromTime];
NSLog(@"time Int %f",timeinterval/3600);
float numberOfIntervals = timeinterval/3600;
NSLog(@"Start time %f",numberOfIntervals);
for(int iCount = 0;iCount < numberOfIntervals*2 ;iCount ++)
{
dateByAddingThirtyMinute = [fromTime dateByAddingTimeInterval:1800];
fromTime = dateByAddingThirtyMinute;
NSString *formattedDateString;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
formattedDateString = [dateFormatter stringFromDate:dateByAddingThirtyMinute];
NSLog(@"Time after 30 min %@",formattedDateString);
}
在for循环中,我已经取了numberOfIntervals * 2,因为时间间隔是30分钟,所以60/30 = 2,你的datebyAddingThirtyMinute是1800,因为30分钟= 1800秒.如果你想要每10分钟一次,那么它应该是60/10 = 6,所以它应该是numberOfIntervals * 6.你的datebyAddingThirtyMinute应该是[fromTime dateByAddingTimeInterval:600];
希望这会有所帮助:)
