美文网首页
iOS 关于时间类API的整理

iOS 关于时间类API的整理

作者: F_Hongpeng | 来源:发表于2019-11-22 10:22 被阅读0次

    /**

     返回时间戳(单位:秒)

    */

    +(long)dateCurrent;

    /**

     *  获取iPhone时间(数组形式)。

     *  @return @"2016" @"2" @"18" @"11" @"26" @"00"

     */

    +(NSArray*)dateMembers;

    /**

     *  获取iPhone时间(字符串形式)。

     *  @return @"20160218112600"

     */

    + (NSString*)dateString;

    /**

     *  编辑日期时间

     */

    +(NSDate*)makeDateYear:(int)y

                     Month:(int)mo

                       Day:(int)d

                      Hour:(int)h

                       Min:(int)m

                       Sec:(int)s;

    /**

     *  将字符串日期分解时间成员,@"20160218112600" => @"2016" @"2" @"18" @"11" @"26" @"00"

     *  @param time    @"20160218112600"

     *  @return @"2016" @"2" @"18" @"11" @"26" @"00"

     */

    + (NSArray*)divideDateMembers:(NSString*)time;

    /**

     *  时间值加“秒”值。

     *  @param  sec    秒数

     *  @param  date    @"20160218112600"

     */

    + (NSString*)addSec:(NSTimeInterval)sec OnDate:(NSString *)date;

    /**

     *  求两个时间点差值。(timeA-timeB)

     *  @param  timeA    @"20160218112601"

     *  @param  timeB    @"20160218112600"

     */

    +(NSTimeInterval)differenceOfDateA:(NSString*)timeA AndDateB:(NSString*)timeB;

    /**

     *  求两个时间点差值。(dateA-dateB)

     *  @param  dateA

     *  @param  dateB

     */

    +(NSTimeInterval)gapOfDateA:(NSDate*)dateA DateB:(NSDate*)dateB;

    /**

     *  当前【天】

     */

    + (NSInteger)day:(NSDate *)date;

    /**

     *  当前【月】

     */

    + (NSInteger)month:(NSDate *)date;

    /**

     *  当前【年】

     */

    + (NSInteger)year:(NSDate *)date;

    /**

     *  当前【星期】

     */

    + (NSInteger)weekday:(NSDate *)date;

    /**

     *  这周是这个月的第几周?

     */

    + (NSInteger)firstWeekdayInThisMonth:(NSDate *)date;

    /**

     *  获取当前月天数

     */

    + (NSInteger)totaldaysInMonth:(NSDate *)date;

    /**

     *  上/下m个月后的时间。

     */

    + (NSDate*)changeMonth:(int)monDate:(NSDate*)date;

    /**

     *  上/下d个天后的时间。

     */

    + (NSDate*)changeDay:(int)donDate:(NSDate*)date;

    /**

     *  秒数换算

     *  输入 :60秒      (uint32_t)

     *  返回 :00:01:00 (NSString*)

     */

    +(NSString*)stringFromSec:(uint32_t)sec;

    +(long)dateCurrent{

        NSDate*datenow = [NSDatedate];

        longtime = (long)([datenowtimeIntervalSince1970]);

        returntime;

    }

    +(NSArray*)dateMembers

    {

        NSDate*date = [NSDatedate];// 获得时间对象

        NSDateFormatter *forMatter = [[NSDateFormatter alloc] init];

        [forMattersetDateFormat:@"yyyy-MM-dd-HH-mm-ss"];

        NSString*dateStr = [forMatterstringFromDate:date];

        NSArray * arr = [dateStr componentsSeparatedByString:@"-"];

        returnarr;

    }

    +(NSDate*)makeDateYear:(int)yMonth:(int)moDay:(int)dHour:(int)hMin:(int)mSec:(int)s{

        NSString*dateStr = [NSStringstringWithFormat:@"%d-%d-%d-%d-%d-%d",y,mo,d,h,m,s];

        NSDateFormatter *dateFormatter = [NSDateFormatter new];

        [dateFormattersetDateFormat:@"yyyy-MM-dd-HH-mm-ss"];

        NSDate*destDate= [dateFormatterdateFromString:dateStr];

        returndestDate;

    }

    + (NSArray*)divideDateMembers:(NSString*)time{

        if(time.length!=14)returnnil;

        NSString * y = [time substringWithRange:NSMakeRange(0, 4)];

        NSString * mo= [time substringWithRange:NSMakeRange(4, 2)];

        NSString * d = [time substringWithRange:NSMakeRange(6, 2)];

        NSString * h = [time substringWithRange:NSMakeRange(8, 2)];

        NSString * m = [time substringWithRange:NSMakeRange(10, 2)];

        NSString * s = [time substringWithRange:NSMakeRange(12, 2)];

        NSArray* array =@[y,mo,d,h,m,s];

        returnarray;

    }

    + (NSString*)dateString{

        NSDateFormatter *format = [NSDateFormatter new];

        [formatsetDateFormat: @"yyyyMMddHHmmss"];

        NSString* string = [formatstringFromDate:[NSDatedate]];

        returnstring;

    }

    + (NSString*)addSec:(NSTimeInterval)sec OnDate:(NSString *)date{

        NSDateFormatter *dateFormatter = [NSDateFormatter new];

        [dateFormattersetDateFormat:@"yyyyMMddHHmmss"];

        /*--- 原来时间值 ---*/

        NSDate*destDate= [dateFormatterdateFromString:date];

        /*--- 在原来时间值+sec秒值 ---*/

        NSDate*addSecDate = [destDatedateByAddingTimeInterval:sec];

        NSString*addSecDateString = [dateFormatterstringFromDate:addSecDate];

        returnaddSecDateString;

    }

    /*

     *  用途:求两个时间点差值。

     */

    +(NSTimeInterval)differenceOfDateA:(NSString*)timeA AndDateB:(NSString*)timeB{

        NSDateFormatter * format = [NSDateFormatter new];

        [formatsetDateFormat: @"yyyyMMddHHmmss"];

        NSDate* dateA = [formatdateFromString:timeA];

        //NSTimeInterval late1=[dateA timeIntervalSince1970]*1;

        NSDate* dateB = [formatdateFromString:timeB];

        //NSTimeInterval late2=[dateB timeIntervalSince1970]*1;

        //long ret = (long)(late2 - late1);

        NSTimeIntervalgap = [dateAtimeIntervalSinceDate:dateB];

        returngap;

    }

    +(NSTimeInterval)gapOfDateA:(NSDate*)dateA DateB:(NSDate*)dateB{

        NSTimeIntervalgap = [dateAtimeIntervalSinceDate:dateB];

        returngap;

    }

    + (NSInteger)day:(NSDate *)date{

        NSCalendar*calendar = [NSCalendarcurrentCalendar];

        [calendarsetTimeZone:[NSTimeZone localTimeZone]];

        NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];

        return[componentsday];

    }

    + (NSInteger)month:(NSDate *)date{

        NSCalendar*calendar = [NSCalendarcurrentCalendar];

        [calendarsetTimeZone:[NSTimeZone localTimeZone]];

        NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];

        return[componentsmonth];

    }

    + (NSInteger)year:(NSDate *)date{

        NSCalendar*calendar = [NSCalendarcurrentCalendar];

        [calendarsetTimeZone:[NSTimeZone localTimeZone]];

        NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];

        return[componentsyear];

    }

    + (NSInteger)weekday:(NSDate *)date{

        NSCalendar*calendar = [NSCalendarcurrentCalendar];

        [calendarsetTimeZone:[NSTimeZone localTimeZone]];

        NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitWeekday) fromDate:date];

        return[componentsweekday];

    }

    + (NSInteger)firstWeekdayInThisMonth:(NSDate *)date{

        NSCalendar*calendar = [NSCalendarcurrentCalendar];

        [calendarsetFirstWeekday:1];//1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur. 6.Fri. 7.Sat.

        NSDateComponents *comp = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];

        [compsetDay:1];

        NSDate*firstDayOfMonthDate = [calendardateFromComponents:comp];

        NSUInteger firstWeekday = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:firstDayOfMonthDate];

        returnfirstWeekday -1;

    }

    + (NSInteger)totaldaysInMonth:(NSDate *)date{

        NSRange daysInLastMonth = [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];

        returndaysInLastMonth.length;

    }

    + (NSDate*)changeMonth:(int)monDate:(NSDate*)date{

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

        dateComponents.month= m;

        NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:date options:0];

        returnnewDate;

    }

    + (NSDate*)changeDay:(int)donDate:(NSDate*)date{

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

        dateComponents.day= d;

        NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:date options:0];

        returnnewDate;

    }

    +(NSString*)stringFromSec:(uint32_t)sec{

        uint32_tm_sec = sec%60;

        uint32_tm_min = ((sec-m_sec)/60)%60;

        uint32_tm_hour= (sec-m_min*60-m_sec)/3600;

        NSString*s_sec = [selftextSec:m_sec];

        NSString*s_min = [selftextSec:m_min];

        NSString*s_hour= [selftextSec:m_hour];

        if(m_hour <=0) {

            return[NSStringstringWithFormat:@"%@:%@",s_min,s_sec];

        }else{

            return[NSStringstringWithFormat:@"%@:%@:%@",s_hour,s_min,s_sec];

        }

    }

    +(NSString*)textSec:(uint32_t)sec{

        if(sec<10) {

            return[NSStringstringWithFormat:@"0%d",sec];

        }else{

            return[NSStringstringWithFormat:@"%d",sec];

        }

    }

    相关文章

      网友评论

          本文标题:iOS 关于时间类API的整理

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