美文网首页iOS常用
iOS 获取两个时间刻度之间的时间数组,或者指定时间间隔

iOS 获取两个时间刻度之间的时间数组,或者指定时间间隔

作者: 学无止境666 | 来源:发表于2020-07-06 15:05 被阅读0次

    背景

    有个业务需求就是需要在15:05:00 ~ 15:30:00 时间间隔为15秒, 获取其中的所有时间点的时间数组, 时间格式为 150500, 153000, 本来想着统一转换为秒来计算, 但是总感觉这样就需要一直装换时间格式, 挺繁琐就写了以下的通用方式来获取时间数组

    废话不多说直接上代码

    /**
     * 根据起始时间和结束时间,以及时间间隔,来返回时间数组(时间必须是113000, 这种格式的)
     * @param begin 起始时间
     * @param end 结束时间
     * @param interval 时间间隔
     */
    + (NSArray *)getFormatterTimeArrayWithBegin:(int)begin
                                            end:(int)end
                                       interval:(int)interval
    {
        NSMutableArray *tempTimeArray = [NSMutableArray array];
        int beginTime = begin;
        int endTime = end;
        int timeInterval = interval;
        
        NSString *beginTimeString = [NSString stringWithFormat:@"%@",@(beginTime)];
        NSString *endTimeString = [NSString stringWithFormat:@"%@",@(endTime)];
    
        /**< 确保长度为6 并且时间间隔需要大于0 */
        if (beginTimeString.length == 6 && endTimeString.length == 6 && interval > 0) {
                    
            int h = [[beginTimeString substringWithRange:NSMakeRange(0, 2)] intValue];
            int m = [[beginTimeString substringWithRange:NSMakeRange(2, 2)] intValue];
            int s = [[beginTimeString substringWithRange:NSMakeRange(4, 2)] intValue];
            
            /**< 先加入初始时间 */
            [tempTimeArray addObject:beginTimeString];
            NSString *resultTime = @"";
            while (beginTime < endTime) {
                s += timeInterval;
                if (s == 60) {
                    s -= 60;
                    m += 1;
                    if (m == 60) {
                        m -= 60;
                        h += 1;
                        if (h == 24) {
                            h -= 24;
                        }
                    }
                }
    
                resultTime = [NSString stringWithFormat:@"%@%@%@",[[self class] getFormatStringWithTime:h], [[self class] getFormatStringWithTime:m], [[self class] getFormatStringWithTime:s]];
                beginTime = [resultTime intValue];
                [tempTimeArray addObject:resultTime];
            }
        }
        return tempTimeArray;
    }
    
    /**< 确保两位数 */
    + (NSString *)getFormatStringWithTime:(int)time
    {
        NSString *resultString = @"";
        if ([NSString stringWithFormat:@"%@", @(time)].length == 1) {
            /**< 如果秒位上只有一位数, 则补0  例如 秒为1,  则补为 01 保持时间长度不变*/
            resultString = [NSString stringWithFormat:@"0%@", @(time)];
        }else{
            resultString = [NSString stringWithFormat:@"%@",@(time)];
        }
        return resultString;
    }
    
    

    这样就可以方便的获取时间数组,有好的通用方法,欢迎交流

    相关文章

      网友评论

        本文标题:iOS 获取两个时间刻度之间的时间数组,或者指定时间间隔

        本文链接:https://www.haomeiwen.com/subject/mogwqktx.html