zoukankan      html  css  js  c++  java
  • 日期和时间的处理 NSCalendar (二)

    其他方法的说明
        - (NSRange)maximumRangeOfUnit:(NSCalendarUnit)unit;
        返回单元的最大范围。就Gregorian来说有:
         NSEraCalendarUnit => 0 - 2
         NSYearCalendarUnit => 1 - 10000
         NSMonthCalendarUnit = 1 - 12
         NSDayCalendarUnit = 1 - 31
         NSHourCalendarUnit = 0 - 24
         NSMinuteCalendarUnit = 0 - 60
         NSSecondCalendarUnit = 0 - 60
         NSWeekCalendarUnit = 1 - 53
         NSWeekdayCalendarUnit = 1 - 7
         NSWeekdayOrdinalCalendarUnit = ? (2147483647 - 2147483647)
                                             (NSNotFound - NSNotFound)

        - (NSRange)minimumRangeOfUnit:(NSCalendarUnit)unit;
        返回单元的最小范围。就Gregorian来说有:
         NSEraCalendarUnit => 0 - 2
         NSYearCalendarUnit => 1 - 10000
         NSMonthCalendarUnit = 1 - 12
         NSDayCalendarUnit = 1 - 28  ***
         NSHourCalendarUnit = 0 - 24
         NSMinuteCalendarUnit = 0 - 60
         NSSecondCalendarUnit = 0 - 60
         NSWeekCalendarUnit = 1 - 52  ***
         NSWeekdayCalendarUnit = 1 - 7
         NSWeekdayOrdinalCalendarUnit = ? (2147483647 - 2147483647)
                                             (NSNotFound - NSNotFound)

        - (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date
        返回某个特定时间(date)其对应的小的时间单元(smaller)在大的时间单元(larger)中的顺序,比如:
        . 要取得2008/11/12在当月的第几周则可以这样调用该方法:
          [calendar ordinalityOfUnit:NSWeekOrdinalCalendarUnit inUnit: NSWeekCalendarUnit forDate: someDate]; 
          注: someDate存放了2008/11/12

        . 要取得1:50分在一天中处于第几个小时,则可以这样调用该方法:
          [calendar ordinalityOfUnit:NSHourCalendarUnit inUnit: NSDayCalendarUnit forDate: someTime]; 
          注: someTime存放了1:50

        . 其它请参照firstWeekday和minimumDaysInFirstWeek中的说明


        - (NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date
        返回某个特定时间(date)其对应的小的时间单元(smaller)在大的时间单元(larger)中的范围,比如:
        . 要取得2008/11/12在所在月份的日期范围则可以这样调用该方法:
          [calendar ordinalityOfUnit:NSDayCalendarUnit inUnit: NSMonthCalendarUnit forDate:fDate]; 
          则返回1-31。注: fDate存放了2008/11/12

        . 要取得2008/02/20在所在月份的日期范围则可以这样调用该方法:
          [calendar ordinalityOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:fDate]; 
          则返回1-29。注: fDate存放了2008/11/12

        - (BOOL)rangeOfUnit:(NSCalendarUnit)unit startDate:(NSDate **)sDate interval:(NSTimeInterval *)unitSecs forDate:(NSDate *)date;
        用于返回日期date(参数)所在的那个日历单元unit(参数)的开始时间(sDate)。其中参数unit指定了日历单元,参数sDate用于返回日历单元的第一天,参数unitSecs用于返回日历单元的长度(以秒为单位),参数date指定了一个特定的日期。
        如果startDate和interval均为可计算的,那么函数返回YES否则返回NO.比如:

        . 要计算2008/01/08日所在的周的第一天:
            ...
            NSDate *dateOut = [NSDate date];
            NSDate **sDate = &dateOut;
     
            NSDateComponents *dc = [[NSDateComponents alloc] init];
            [dc setYear: 2008];
            [dc setMonth: 1];
            [dc setDay: 8];
           
            NSDate *date = [calendar dateFromComponents:dc];
            NSTimeInterval intOut;
            NSTimeInterval *intervalOut = &intOut;
     
            if ([calendar rangeOfUnit:NSMonthCalendarUnit startDate:sDate interval:interval0 forDate:date]){
                NSLog(@"%@", [*sDate description]);
                NSLog(@"%f", *intervalOut);
            }
            else{
                NSLog(@"Can not be calculated!");
            }
            ...
          在控制台窗口上可以看到:
          2008-01-06 00:00:00 +0800
          604800.000000
          注: 2008-01-06是2008/01/08所在周的第一天,604800是一周7天的秒数。     

        . 要计算2008/01/05日所在的周的第一天,在控制台窗口上可以看到:
          2007-12-30 00:00:00 +0800
          604800.000000

        . 要计算2008/02/06日所在的月的第一天,在控制台窗口上可以看到:
          2007-02-01 00:00:00 +0800
          2505600.000000
          注: 2505600是二月29天的秒数。

  • 相关阅读:
    JQueryMobile开发必须的知道的知识
    15款很棒的 JavaScript 开发工具
    浅谈 JavaScript 编程语言的编码规范
    也谈谈js的压缩,jquery压缩。【转】
    jQuery实现点击单选按钮切换选中状态效果
    JavaScript入门学习书籍的阶段选择
    试读《基于MVC的JavaScript Web富应用开发》— 不一样的JavaScript
    javaScript之function定义
    利用Powershell自动部署asp.net mvc网站项目 (一)
    【好文收藏】javascript中event对象详解
  • 原文地址:https://www.cnblogs.com/luqinbin/p/4910951.html
Copyright © 2011-2022 走看看