zoukankan      html  css  js  c++  java
  • 时间你懂的,

    //

    //  TimeUtil.m

    //  QTui

    //

    //  Created by wangyanan on 9/14/15.

    //  Copyright (c) 2015 wangyanan. All rights reserved.

    //

     

    #import "TimeUtil.h"

     

     

    @interface TimeUtil()

     

    @property(nonatomic,strong) NSCalendar *currentCalendar;

    @property(nonatomic,strong) NSDateFormatter *formatter;

    @property(nonatomic,strong) NSDateComponents *resultComps;

     

     

    @end

    @implementation TimeUtil

     

    +(TimeUtil *)sharedTimeUtil

    {

        static TimeUtil *timeUtil = nil;

        @synchronized(self) {

            if (!timeUtil) {

                timeUtil = [[self alloc]init];

            }

            

        }

        return timeUtil;

        

    }

     

     

     

     

     

     

    /**

     *  强大的dateCalendar

     date --->dateComponent ---->dateCalendar

     *

     *  @param date

     *

     *  @return

     */

    -(NSDateComponents *)dateComponentByDate:(NSDate *)date

    {

        NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

        return  [self.currentCalendar components:unitFlags fromDate:date];

    }

     

     

     

    -(NSString *)startTimeStr:(NSInteger)timeType

    {

        NSString *formateStr = nil;

        NSString *returnStr = nil;

        switch (timeType)

        {

            case MHour:

            {

                

                formateStr = @"yyyyMMddHH";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSDateComponents *currentComps = [self dateComponentByDate:date];

                [currentComps setYear:[currentComps year]];

                [currentComps setMonth:[currentComps month]];

                [currentComps setDay:[currentComps day]];

                [currentComps setHour:0];

     

    //            [currentComps setHour:[currentComps hour]-12];

                NSDate *returnDate = [self.currentCalendar dateFromComponents:currentComps];

                returnStr = [self.formatter stringFromDate:returnDate];

                break;

            }

                

            case MDay:

            {

                formateStr = @"yyyyMMdd";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSDateComponents *currentComps = [self dateComponentByDate:date];

                [currentComps setYear:[currentComps year]];

                [currentComps setMonth:[currentComps month]];

                [currentComps setDay:[currentComps day]-7];

                [currentComps setHour:0];

                NSDate *returnDate = [self.currentCalendar dateFromComponents:currentComps];

                returnStr = [self.formatter stringFromDate:returnDate];

                break;

            }

            case MWeek:

            {

                formateStr = @"yyyyww";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSDateComponents *currentComps = [self dateComponentByDate:date];

                //            [currentComps setWeekOfYear:[currentComps weekOfYear]-4];

                

                

                NSDateComponents *mComps = [[NSDateComponents alloc]init];

                [mComps setYear:[currentComps year]];

                [mComps setWeekday:[currentComps weekday]];

                [mComps setWeekOfYear:[currentComps weekOfYear]-4];

                

                

                NSDate *returnDate = [self.currentCalendar dateFromComponents:mComps];

                returnStr = [self.formatter stringFromDate:returnDate];

                break;

            }

                

            default:

            {

                formateStr = @"yyyyMM";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSDateComponents *currentComps = [self dateComponentByDate:date];

                //            [currentComps setYear:[currentComps year]];

                [currentComps setMonth:[currentComps month]-4];

                NSDate *returnDate = [self.currentCalendar dateFromComponents:currentComps];

                returnStr = [self.formatter stringFromDate:returnDate];

                break;

            }

        }

        TTLog(@"....%@",returnStr);

        return returnStr;

        

    }

     

     

     

    -(NSString *)endTimeStr:(NSInteger)timeType

    {

        NSString *formateStr = nil;

        NSString *returnStr = nil;

        switch (timeType)

        {

            case MHour:

            {

                

                formateStr = @"yyyyMMddHH";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSDateComponents *currentComps = [self dateComponentByDate:date];

                [currentComps setYear:[currentComps year]];

                [currentComps setMonth:[currentComps month]];

                [currentComps setDay:[currentComps day]];

                [currentComps setHour:12];

                NSDate *returnDate = [self.currentCalendar dateFromComponents:currentComps];

                returnStr = [self.formatter stringFromDate:returnDate];

                break;

            }

                

            case MDay:

            {

                formateStr = @"yyyyMMdd";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                returnStr = [self.formatter stringFromDate:date];

                break;

            }

            case MWeek:

            {

                formateStr = @"yyyyww";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                returnStr = [self.formatter stringFromDate:date];

                break;

            }

                

            default:

            {

                formateStr = @"yyyyMM";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                returnStr = [self.formatter stringFromDate:date];

                break;

            }

        }

        TTLog(@"....%@",returnStr);

        return returnStr;

    }

     

     

     

    /**

     *  显示在X轴的时间格式

     *

     *  @param

     *

     *  @return

     */

    -(NSArray *)sTimeWithType:(StatisTimeType)type

    {

        NSString *formateStr = nil;

        NSString *returnStr = nil;

        NSMutableArray *returnArray = [NSMutableArray array];

        switch (type) {

            case MHour:

            {

                //            yyyy-MM-dd HH:mm:ss.fff

                //            按小=2015082010,按天=20150820,按周=201534,按月份=201508</li>

                

                formateStr = @"yyyyMMddHH";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                [self.resultComps setYear:[currentComps year]];

                [self.resultComps setMonth:[currentComps month]];

                [self.resultComps setDay:[currentComps day]];

                

                //            for(int i =0;i<12;i++){

                for(int i =11;i>-1;i--){

                    [self.resultComps setHour:[currentComps hour]-i];

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:self.resultComps];

                    self.formatter.dateFormat = @"HH";

                    returnStr = [self.formatter stringFromDate:returnDate];

                    [returnArray addObject:returnStr];

                    

                }

                break;

            }

            case MDay:

            {

                formateStr = @"yyyyMMdd";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                [self.resultComps setYear:[currentComps year]];

                [self.resultComps setMonth:[currentComps month]];

                

                for(int i =6;i>-1;i--){

                    [self.resultComps setDay:[currentComps day]-i];

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:self.resultComps];

                    self.formatter.dateFormat = @"MMdd";

                    returnStr = [self.formatter stringFromDate:returnDate];

                    [returnArray addObject:returnStr];

                    

                }

                

                break;

            }

            case MWeek:

            {

                

                formateStr = @"yyyyww";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                NSDateComponents *mComps = [[NSDateComponents alloc]init];

                [mComps setYear:[currentComps year]];

                [mComps setWeekday:[currentComps weekday]];

                

                

                NSMutableArray *tempArray = [NSMutableArray array];

                

                for(int i =3;i>-1;i--){

                    [mComps setWeekOfYear:[currentComps weekOfYear]-i];

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:mComps];

                    self.formatter.dateFormat = @"yyyyww";

                    NSString *returnStr = [self.formatter stringFromDate:returnDate];

                    [tempArray addObject:returnStr];

                }

                

                

                for (NSString *timeStr in tempArray) {

                    self.formatter.dateFormat = @"yyyyww";

                    NSDate *mDate = [self.formatter dateFromString:timeStr];

                    currentComps = [self.currentCalendar components:unitFlags fromDate:mDate];

                    [mComps setYear:[currentComps year]];

                    [mComps setMonth:[currentComps month]];

                    [mComps setDay:[currentComps day]];

                    self.formatter.dateFormat = @"MM.dd";

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:mComps];

                    NSString * strOne = [self.formatter stringFromDate:returnDate];

                    [mComps setDay:[currentComps day]+6];

                    returnDate = [self.currentCalendar dateFromComponents:mComps];

                    NSString * strTwo = [self.formatter stringFromDate:returnDate];

                    returnStr = [NSString stringWithFormat:@"%@-%@",strOne,strTwo];

                    [returnArray addObject:returnStr];

                }

                

                

                break;

            }

                

            default:

            {

                formateStr = @"yyyyMM";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                [self.resultComps setYear:[currentComps year]];

                [self.resultComps setDay:[currentComps day]];

                [self.resultComps setHour:[currentComps hour]];

                

                for(int i =3;i>-1;i--){

                    [self.resultComps setMonth:[currentComps month]-i];

                    self.formatter.dateFormat  = @"yyyyMM";

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:self.resultComps];

                    returnStr = [self.formatter stringFromDate:returnDate];

                    [returnArray addObject:returnStr];

                }

                

                break;

            }

                

                

        }

        

        

        return returnArray;

    }

     

     

     

     

     

     

     

    /**

     *  传递给服务器的时间格式

     *

     *  @param type

     *

     *  @return

     */

     

    -(NSArray *)tTimeWithType:(StatisTimeType)type

    {

        NSString *formateStr = nil;

        NSString *returnStr = nil;

        NSMutableArray *returnArray = [NSMutableArray array];

        switch (type) {

            case MHour:

            {

                //            yyyy-MM-dd HH:mm:ss.fff

                //            按小=2015082010,按天=20150820,按周=201534,按月份=201508</li>

                

                formateStr = @"yyyyMMddHH";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                [self.resultComps setYear:[currentComps year]];

                [self.resultComps setMonth:[currentComps month]];

                [self.resultComps setDay:[currentComps day]];

                

                

                for(int i =11;i>-1;i--){

                    [self.resultComps setHour:[currentComps hour]-i];

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:self.resultComps];

                    returnStr = [self.formatter stringFromDate:returnDate];

                    [returnArray addObject:returnStr];

                    

                }

                //            for(int i =0;i<12;i++){

                //                [self.resultComps setHour:i];

                //                NSDate *returnDate = [self.currentCalendar dateFromComponents:self.resultComps];

                //                returnStr = [self.formatter stringFromDate:returnDate];

                //                [returnArray addObject:returnStr];

                //

                //            }

                break;

            }

            case MDay:

            {

                formateStr = @"yyyyMMdd";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                [self.resultComps setYear:[currentComps year]];

                [self.resultComps setMonth:[currentComps month]];

                

                for(int i =6;i>-1;i--){

                    [self.resultComps setDay:[currentComps day]-i];

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:self.resultComps];

                    returnStr = [self.formatter stringFromDate:returnDate];

                    [returnArray addObject:returnStr];

                    

                }

                

                break;

            }

            case MWeek:

            {

                

                formateStr = @"yyyyww";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                

                NSDateComponents *mComps = [[NSDateComponents alloc]init];

                [mComps setYear:[currentComps year]];

                [mComps setWeekday:[currentComps weekday]];

                

                for(int i =3;i>-1;i--){

                    [mComps setWeekOfYear:[currentComps weekOfYear]-i];

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:mComps];

                    NSString *returnStr = [self.formatter stringFromDate:returnDate];

                    [returnArray addObject:returnStr];

                }

                break;

            }

                

            default:

            {

                formateStr = @"yyyyMM";

                self.formatter.dateFormat = formateStr;

                NSDate *date = [NSDate date];

                NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond|NSCalendarUnitWeekOfYear;

                NSDateComponents *currentComps = [self.currentCalendar components:unitFlags fromDate:date];

                [self.resultComps setYear:[currentComps year]];

                [self.resultComps setDay:[currentComps day]];

                [self.resultComps setHour:[currentComps hour]];

                

                for(int i =3;i>-1;i--){

                    [self.resultComps setMonth:[currentComps month]-i];

                    NSDate *returnDate = [self.currentCalendar dateFromComponents:self.resultComps];

                    returnStr = [self.formatter stringFromDate:returnDate];

                    [returnArray addObject:returnStr];

                }

                break;

            }

                

        }

        

        

        return returnArray;

    }

     

     

     

     

     

    -(NSDateFormatter *)formatter

    {

        if (!_formatter) {

            _formatter = [[NSDateFormatter alloc]init];

        }

        return _formatter;

    }

     

    -(NSCalendar *)currentCalendar

    {

        if (!_currentCalendar) {

            

            _currentCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

            

        }

        return _currentCalendar;

    }

     

    -(NSDateComponents *)resultComps

    {

        if (!_resultComps) {

            _resultComps = [[NSDateComponents alloc]init];

        }

        return _resultComps;

    }

     

    @end

  • 相关阅读:
    使用Python读取照片的GPS信息
    jquery animate自定义动画
    javascript 跨域名 精简
    c++ 多态
    sougou php mysql 调用
    smarty 快速入门
    html 表单模板
    stl helloworld 链表 快速入门
    解析C函数式宏
    宏常用例子
  • 原文地址:https://www.cnblogs.com/guligei/p/5060937.html
Copyright © 2011-2022 走看看