欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS:时间相关(18-01-24更)

程序员文章站 2022-07-02 17:10:41
先整理出时间相关的程序,以后有空再写成单例。 1、日历(NSCalendar) 2、时间格式() 3、时间戳 1、日历(NSCalendar) 1、想要获取 世纪、年、月、日、时、分、秒、星期 等信息,需要加入对应的枚举。 2、时间格式() 3、时间戳 ......

先整理出时间相关的程序,以后有空再写成单例。

 

1、日历(NSCalendar)

2、时间格式()

3、时间戳

 

附录:

1、定时器

 

 

1、日历(NSCalendar)

  1、想要获取 世纪、年、月、日、时、分、秒、星期 等信息,需要加入对应的枚举。

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];
NSUInteger units = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *components = [calendar components:units fromDate:[NSDate date]];

  

2、时间格式()

 

 

 

3、时间戳

 

 

 

 

 

附录:

1、定时器

  1)、使用方法

//定时1秒,重复
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];

//定时中断处理
-(void)timeAction:(NSTimer*)timer
{
	NSMutableArray *viewArray = timer.userInfo;
}

//定时器失效、释放
[timer invalidate];

  补充:理论上,多个任务挂载到同一个定时器上,在定时中断处理,判断某任务是否需要暂停。

     而不是,每个任务添加一个定时器,然后暂定定时器来暂停任务。

 

  2)、滚动视图,定时器失效。解决方法:添加到RunLoop里

    // NSDefaultRunLoopMode - 标准优先级
    // NSRunLoopCommonModes - 高优先级
    // UITrackingRunLoopMode - 用于 UIScrollView 和别的控件的动画
    
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
        
    }];
    
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

  补充:NSDefaultRunLoopMode ,默认模式,使用该模式还是会失效。

     UITrackingRunLoopMode,用这个模式跟UIScrollView相同模式,拖动可以正常计时。

     NSRunLoopCommonModes,把timer同时添加到上面两种RunLoop模式下(网上写的),拖动可以正常计时。

    // 获得当前线程的 RunLoop 对象
    [NSRunLoop currentRunLoop];
    // 获得主线程的 RunLoop 对象
    [NSRunLoop mainRunLoop];