• object c小代码——日期篇


    1、判断两个日期是否是同一天,不要求小时,分钟要一样

       用法

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    
    BOOL datesAreEqual = [calendar isDate:firstDate equalToDate:secondDate toUnitGranularity:NSDayCalendarUnit];

    NSCalendar+equalWithGranularity.h

    #import <Foundation/Foundation.h>
    
    @interface NSCalendar (equalWithGranularity)
    
    - (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity;
    
    @end

    NSCalendar+equalWithGranularity.m

    #import "NSCalendar+equalWithGranularity.h"
    
    @implementation NSCalendar (equalWithGranularity)
    
    - (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity {
    
        if ([date1 isEqualToDate:date2]) {
            return YES;
        }
        int componentFlags = [self componentFlagsWithGranularity:granularity];
        date1 = [self dateFromDate:date1 withComponentFlags:componentFlags];
        date2 = [self dateFromDate:date2 withComponentFlags:componentFlags];
        return [date1 isEqualToDate:date2];
    
    }
    - (int)componentFlagsWithGranularity:(NSCalendarUnit)granularity
    {
        int componentFlags = 0;
        for (int i = 1<<1 ; i <= granularity ; i = i<<1) {
    
            componentFlags = componentFlags | i;
        }
        return componentFlags;
    
    }
    - (NSDate *)dateFromDate:(NSDate *)date withComponentFlags:(int)componentFlags {
    
        NSDateComponents *components = [self components:componentFlags fromDate:date];
        return [self dateFromComponents:components];
    }
    @end

    2、时间若干操作

    1 // 当前时间创建NSDate
    
    NSDate *myDate = [NSDate date];
    
    NSLog(@"myDate = %@",myDate);
    
    2 //从现在开始的24小时
    
    NSTimeInterval secondsPerDay = 24*60*60;
    
    NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];
    
    NSLog(@"myDate = %@",tomorrow);
    
    3//根据已有日期创建日期
    
    NSTimeInterval secondsPerDay1 = 24*60*60;
    
    NSDate *now = [NSDate date];
    
    NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];
    
    NSLog(@"yesterDay = %@",yesterDay);
    
    4//比较日期
    
    BOOL sameDate = [now isEqualToDate:yesterDay];
    
    NSLog(@"sameDate = %lu",sameDate);
    
    4.1//获取较早的日期
    
    NSDate *earlierDate = [yesterDay earlierDate:now];
    
    NSLog(@"earlierDate = %@",earlierDate);
    
    4.2//较晚的日期
    
    NSDate *laterDate = [yesterDay laterDate:now];
    
    NSLog(@"laterDate = %@",laterDate);
    
    //两个日期之间相隔多少秒
    
    NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now];
    
    NSLog(@"secondsBetweenDates= %lf",secondsBetweenDates);
    
    //通过NSCALENDAR类来创建日期
    
    NSDateComponents *comp = [[NSDateComponentsalloc]init];
    
    [comp setMonth:06];
    
    [comp setDay:01];
    
    [comp setYear:2001];
    
    NSCalendar *myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];
    
    NSDate *myDate1 = [myCal dateFromComponents:comp];
    
    NSLog(@"myDate1 = %@",myDate1);
    
    //从已有日期获取日期
    
    unsigned units = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;
    
    NSDateComponents *comp1 = [myCal components:units fromDate:now];
    
    NSInteger month = [comp1 month];
    
    NSInteger year = [comp1 year];
    
    NSInteger day = [comp1 day];
    
    //NSDateFormatter实现日期的输出
    
    NSDateFormatter *formatter = [[NSDateFormatteralloc]init];
    
    [formatter setDateStyle:NSDateFormatterFullStyle];//直接输出的话是机器码
    
    //或者是手动设置样式[formatter setDateFormat:@"yyyy-mm-dd"];
    
    NSString *string = [formatter stringFromDate:now];
    
    NSLog(@"string = %@",string);
    
    NSLog(@"formater = %@",formatter);

    转自 http://www.cnblogs.com/xdream86/archive/2012/12/17/2821305.html,感谢原作者的整理收集

  • 相关阅读:
    第2天 轻量级RPC框架开发
    028_ajax的String,View,Object执行流程
    027_获取隐藏id值的两种方式
    009_myBatis删除多条记录open="(",写成了index="(".
    026_一次性删除多条数据的sql语句
    025_json请求头与form表单请求头?
    024_如何生成一个32位的uuid?
    023_如何实现一次性删除多条记录?
    022_同步请求与异步请求的区别?
    021_SpringMVC中拦截器的作用?
  • 原文地址:https://www.cnblogs.com/howeho/p/3467309.html
Copyright © 2020-2023  润新知