zoukankan      html  css  js  c++  java
  • NSDate详解及获取当前时间等常用操作

    NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等。

     

    1. 创建或初始化可用以下方法

    用于创建NSDate实例的类方法有

    + (id)date;

    返回当前时间

    + (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;  

    返回以当前时间为基准,然后过了secs秒的时间

    + (id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs;

    返回以2001/01/01 GMT为基准,然后过了secs秒的时间

    + (id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;

    返回以1970/01/01 GMT为基准,然后过了secs秒的时间

    + (id)distantFuture;

    返回很多年以后的未来的某一天。(比如你需要一个比现在(Now)()很长时间的时间值,则可以调用该方法。测试返回了4000/12/31 16:00:00

    + (id)distantPast;

    返回很多年以前的某一天。(比如你需要一个比现在(Now)()大很长时间的时间值,则可以调用该方法。测试返回了公元前0001/12/31 17:00:00

     

    用于创建NSDate实例的实例方法有

    - (id)addTimeInterval:(NSTimeInterval)secs;

    返回以目前的实例中保存的时间为基准,然后过了secs秒的时间

     

    用于初始化NSDate实例的实例方法有

    - (id)init;

    初始化为当前时间。类似date方法

    初始化为以2001/01/01 GMT为基准,然后过了secs秒的时间。类似dateWithTimeIntervalSinceReferenceDate:方法

    - (id)initWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate *)refDate;

    初始化为以refDate为基准,然后过了secs秒的时间

    - (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;

    初始化为以当前时间为基准,然后过了secs秒的时间

     

    2. 日期之间比较可用以下方法

    - (BOOL)isEqualToDate:(NSDate *)otherDate;

    otherDate比较,相同返回YES

    - (NSDate *)earlierDate:(NSDate *)anotherDate;

    anotherDate比较,返回较早的那个日期

    - (NSDate *)laterDate:(NSDate *)anotherDate;

    anotherDate比较,返回较晚的那个日期

    - (NSComparisonResult)compare:(NSDate *)other;

    该方法用于排序时调用:

    当实例保存的日期值与anotherDate相同时返回NSOrderedSame

    当实例保存的日期值晚于anotherDate时返回NSOrderedDescending

    当实例保存的日期值早于anotherDate时返回NSOrderedAscending

     

     

    3. 取回时间间隔可用以下方法

    - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)refDate;

    refDate为基准时间,返回实例保存的时间与refDate的时间间隔

    - (NSTimeInterval)timeIntervalSinceNow;

    以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时间间隔

    - (NSTimeInterval)timeIntervalSince1970;

    1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔

    - (NSTimeInterval)timeIntervalSinceReferenceDate;

    2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT的时间间隔

    + (NSTimeInterval)timeIntervalSinceReferenceDate;

    2001/01/01 GMT为基准时间,返回当前时间(Now)2001/01/01 GMT的时间间隔

     

     

    4. 将时间表示成字符串

    - (NSString *)description;

    YYYY-MM-DD HH:MM:SS ±HHMM的格式表示时间。(其中 "±HHMM" 表示与GMT的存在多少小时多少分钟的时区差异。比如,若时区设置在北京,则 "±HHMM" 显示为 "+0800"

     

     

    同时奉上一个比较常用的获取自1970年以来的毫秒数的方法:

    Objective-c代码  

    1. NSTimeInterval time = [[NSDate date] timeIntervalSince1970];  
    2. // NSTimeInterval返回的是double类型,输出会显示为10位整数加小数点加一些其他值  
    3. // 如果想转成int型,必须转成long long型才够大。  
    4.     NSTimeInterval time = [[NSDate date] timeIntervalSince1970];  
    5.     long long dTime = [[NSNumber numberWithDouble:time] longLongValue]; // 将double转为long long型  
    6.     NSString *curTime = [NSString stringWithFormat:@"%llu",dTime]; // 输出long long型  
  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/zxykit/p/5197875.html
Copyright © 2011-2022 走看看