zoukankan      html  css  js  c++  java
  • 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,感谢原作者的整理收集

  • 相关阅读:
    通向KDE4之路(七):文档反省器Okular和Ligature
    KDE言语绑定──KDEBindings
    KDEEdu(教诲性质软件)引见
    KDEMultimedia(KDE多媒体东西)引见
    KDESDK(KDE斥地工具)引见
    通向KDE4之路(十五):Konsole年夜整修
    企业信息化规划http://www.blogcn.com/User/fieldnet/index.html
    写在博客一周年
    Delphi 的内存操作函数(3): 给结构体指针分配内存
    在 Delphi 2009 中, for in 循环都能用在什么地方?
  • 原文地址:https://www.cnblogs.com/howeho/p/3467309.html
Copyright © 2011-2022 走看看