zoukankan      html  css  js  c++  java
  • NSDate、NSDateFormatter、NSCalendar

    #import "ViewController.h"

    @interface ViewController ()

    @property (nonatomic, strong) NSDateFormatter   * dateFormatter;

    @property (nonatomic, strong) NSDate            * today;

    @property (nonatomic, strong) NSDate            * tomorrow;

    @property (nonatomic, strong) NSDate            * yesterday;

    @end

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        

        //获取今天昨天和明天等等(NSDate内容)

        [self getYesterdayOrtomorrowTime];

        //日历(NSCalendar相关内容)

        [self aboutCalendar];

    }

    - (void)aboutCalendar{

        

        NSCalendar *calendar = [NSCalendar currentCalendar];//日历

        

        /**

         NSCalendarUnitEra                = kCFCalendarUnitEra,//年代

         NSCalendarUnitYear               = kCFCalendarUnitYear,//年份

         NSCalendarUnitMonth              = kCFCalendarUnitMonth,//月份

         NSCalendarUnitDay                = kCFCalendarUnitDay,//几号

         NSCalendarUnitHour               = kCFCalendarUnitHour,//几点

         NSCalendarUnitMinute             = kCFCalendarUnitMinute,//几分

         NSCalendarUnitSecond             = kCFCalendarUnitSecond,//几秒

         NSCalendarUnitWeekday            = kCFCalendarUnitWeekday,//

         NSCalendarUnitWeekdayOrdinal     = kCFCalendarUnitWeekdayOrdinal,

         NSCalendarUnitQuarter            NS_ENUM_AVAILABLE(10_6, 4_0) = kCFCalendarUnitQuarter,

         NSCalendarUnitWeekOfMonth        NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitWeekOfMonth,

         NSCalendarUnitWeekOfYear         NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitWeekOfYear,

         NSCalendarUnitYearForWeekOfYear  NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitYearForWeekOfYear,

         NSCalendarUnitNanosecond         NS_ENUM_AVAILABLE(10_7, 5_0) = (1 << 15),

         NSCalendarUnitCalendar           NS_ENUM_AVAILABLE(10_7, 4_0) = (1 << 20),

         NSCalendarUnitTimeZone           NS_ENUM_AVAILABLE(10_7, 4_0) = (1 << 21),

         */

        

        /**************just return one value(从日期中获取到年月日等等)************/

        NSInteger unitData = [calendar component:NSCalendarUnitYearForWeekOfYear fromDate:self.today];

        NSLog(@"unitData == %ld",unitData);

        

        /**************比较两个日期的年月日等************/

        /**

         *  

         NSOrderedAscending = -1L,  升序

         NSOrderedSame,             相同

         NSOrderedDescending        降序

         */

        NSComparisonResult result = [calendar compareDate:self.yesterday toDate:self.tomorrow toUnitGranularity:NSCalendarUnitYear];

        NSLog(@"%ld", result);

        

        /**************get components from an object of NSDate, e.g.year month day****************/

        NSDateComponents * components = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:self.today];

        NSDateComponents * components2 = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:self.yesterday];

        NSLog(@"components   0 == %@", components);

        

        /*****************difference of two NSDate object, result:e.g.1 year 1 month 0 day 4 minute*******************/

        NSDateComponents * components1 = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self.today toDate:self.tomorrow options:0];

        NSLog(@"components   1 == %@", components1);

        

        /*****************difference of two NSDateComponents object, result:e.g.1 year 1 month 0 day 4 minute*********************/

        NSDateComponents * components3 = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth fromDateComponents:components2 toDateComponents:components options:0];

        NSLog(@"components3 == %@", components3);

        /**************** get components from date with timeZone******************/

        NSDateComponents * components4 = [calendar componentsInTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Beijing"] fromDate:self.today];

        NSLog(@"components4 == %@", components4);

        NSDate * zzdate = [calendar dateFromComponents:components4];

        NSLog(@"zzdate == %@", zzdate);

        

    }

    #pragma mark - 根据时间间隔获得时间戳

    - (NSString *)getTimeStampWithTimeInterval:(CGFloat)timeInterval{

        

        NSDate * date = [NSDate dateWithTimeIntervalSince1970:timeInterval];

        NSString * timeStr = [self.dateFormatter stringFromDate:date];

        NSLog(@"%@", timeStr);

        return timeStr;

    }

    #pragma mark - 根据传入的时间获取时间戳

    - (NSString *)getTimeStampWithDate:(NSDate *)date{

        

        NSString * tempStr = [self.dateFormatter stringFromDate:date];

        NSLog(@"%@", tempStr);

        return tempStr;

    }

    #pragma mark - 获取当前时间,昨天、明天等时间

    - (void)getYesterdayOrtomorrowTime{

        

        //今天目前的时间

        self.today = [NSDate date];

        NSLog(@"today == %@", self.today);

        

        //设置时间间隔

        NSTimeInterval oneDayTimeInterval = 365 * 56 * 60 * 60 + 120 + 50.6;

       

        //明天

        self.tomorrow = [NSDate dateWithTimeIntervalSinceNow:oneDayTimeInterval];

        NSLog(@"tomorrow == %@", self.tomorrow);

        

        //昨天

        self.yesterday = [NSDate dateWithTimeIntervalSinceNow:-oneDayTimeInterval];

        NSLog(@"yesterday == %@", self.yesterday);

        

        //比较两个日期,早一些的

        NSDate * earlierDate = [self.yesterday earlierDate:self.today];

        NSLog(@"earlierDate == %@", earlierDate);

        

        //比较两个日期,晚一些的

        NSDate * laterDate = [self.yesterday laterDate:self.tomorrow];

        NSLog(@"laterDate == %@", laterDate);

    }

    - (NSDateFormatter *)dateFormatter{

        

        if (!_dateFormatter) {

            

            _dateFormatter = [[NSDateFormatter alloc] init];

            

            /***************************设置时间格式**************************/

            //设定时间格式,这里可以设置成自己需要的格式

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

            

            /**系统自带的时间格式

             

             *  dateFormatter.dateStyle = kCFDateFormatterMediumStyle;

             

             NSDateFormatterNoStyle     = kCFDateFormatterNoStyle,

             NSDateFormatterShortStyle  = kCFDateFormatterShortStyle,//“11/23/37” or “3:30pm”

             NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,//"Nov 23, 1937"

             NSDateFormatterLongStyle   = kCFDateFormatterLongStyle,//"November 23, 1937” or “3:30:32pm"

             NSDateFormatterFullStyle   = kCFDateFormatterFullStyle//“Tuesday, April 12, 1952 AD” or  "3:30:42pm PST"

             

             */

            /*************************设置时区**************************/

            NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];

            [_dateFormatter setTimeZone:sourceTimeZone];

            

        }

        return _dateFormatter;

    }

  • 相关阅读:
    hdoj5327【前缀和思想】
    codeforces 611C
    codeforces 632C
    poj1163 【记忆化搜索·水】
    2016 Multi-University Training Contest 2 A Acperience
    细剖最短路【闲谈,权当是饭后杂文】
    poj1724【最短路】
    [YY题]HDOJ5288 OO’s Sequence
    Codeforces Round #363 (Div. 2) C. Vacations
    POJ2105【进制转化】
  • 原文地址:https://www.cnblogs.com/Mr-------Li/p/5643827.html
Copyright © 2011-2022 走看看