zoukankan      html  css  js  c++  java
  • IOS中级篇 —— 日期时间对象

    结合NSCalendar和NSDate能做更多的日期时间处理 获得NSCalendar对象

    NSCalendar *calendar = [NSCalendar currentCalendar]; 获得年月日

    - (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)date;

    //创建日期
    NSDate *d = [NSDate date];

    //创建日期对象
    NSCalendar *ca = [NSCalendar currentCalendar];

    //获得时间组件

    NSDateComponents *cms= [ca components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d];

    NSLog(@"%ld-%ld-%ld",cms.year,cms.month,cms.day);

    比较两个日期的差距
    - (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *) startingDate toDate:(NSDate *)resultDate options:(NSCalendarOptions)opts;

    NSString *time1 = @"2014-04-08 20:50:40"; NSString *time2 = @"2014-04-04 18:45:30";

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";


    NSDate *date1 = [fmt dateFromString:time1]; NSDate *date2 = [fmt dateFromString:time2];

     //取时间较早的那个
         [date2 earlierDate:date1];
           
     //取较晚的那个
         [date2 laterDate:date1];

    //把字符串转换成日期
            //和上边类似,仍然需要日期格式化对象,但是调用的方法从stringFromDate变成
            //因为时区设置的问题,这个日期被减去了一天
            NSDateFormatter *format2=[[NSDateFormatter alloc]init];
            [format2 setDateFormat:@"yyyy/MM/dd"];
            NSString *str2=@"2014/10/11";
            NSLog(@"%@",[format2 dateFromString:str2]);

    // 1.创建一个日历对象
    NSCalendar *calendar = [NSCalendar currentCalendar];

    // 2.比较时间的差距
    int unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay
    | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 

    NSDateComponents *cmps = [calendar components:unit fromDate:date2 toDate:date1 options:0];


    NSLog(@"相差%ld年%ld月%ld天%ld小时%ld分钟%ld秒", cmps.year, cmps.month, cmps.day, cmps.hour, cmps.minute, cmps.second);

    计算日期
    //1)明天的此刻
    NSTimeInterval secondsPerDay = 24*60*60;
    NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay]; NSLog(@"myDate = %@",tomorrow);

    //2)昨天的现在
    NSTimeInterval secondsPerDay1 = 24*60*60;

    NSDate *now = [NSDate date];
    NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1]; NSLog(@"yesterDay = %@",yesterDay);

    格式化日期

    NSDate ----> dateString 
    

    //定义NSDate
    NSDate *d1 = [NSDate date];

    //定义日期时间格式化的类
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

    //把Date转换为dataStr
    NSString *dateStr = [formatter stringFromDate:d1];

    • //  设置格式

    • //  fmt.dateFormat = @"今天 HH:mm";

    • //  HH : 24小时制

    • //  hh : 12小时制

    • //  yyyy : 年

    • //  MM : 月

    • //  dd : 号

    • //  mm : 分钟

    • //  ss : 秒

    • //  Z : 时区
  • 相关阅读:
    最近公共祖先
    洛谷 P1076 寻宝 解题报告
    洛谷 P1121 环状最大两段子段和 解题报告
    洛谷 P3705 [SDOI2017]新生舞会 解题报告
    洛谷 P1381 单词背诵 解题报告
    洛谷 P3155 [CQOI2009]叶子的染色 解题报告
    洛谷 P3237 [HNOI2014]米特运输 解题报告
    洛谷 P2345 奶牛集会 解题报告
    洛谷 P1582 倒水 解题报告
    数论知识荟萃
  • 原文地址:https://www.cnblogs.com/deng1989/p/4595265.html
Copyright © 2011-2022 走看看