天天看點

Objective-C基礎之NSDate的常用方法

在介紹NSDate的常用方法之前,需要了解時間戳 的概念,所謂時間戳,其實是指 某一日期到1970年的秒數大小,稱為該日期的時間戳。

了解了時間戳的概念,下面就介紹一些NSDate的常用方法:

1. 建立了一個目前的日期對象

//1.建立了一個目前的日期對象
    //1.1 類方法
    NSDate *date1 = [NSDate date];
    //1.2 init
    NSDate *date2 = [[NSDate alloc] init];
    NSLog(@"date1:%@ , date2:%@",date1, date2);
    
    //1.3 dateWithTimeIntervalSinceNow:在目前日期的基礎上累加一個數值,機關是秒
    //1.3.1 明天
    NSDate *nextDate = [NSDate dateWithTimeIntervalSinceNow:24*60*60];
    NSLog(@"nextDate:%@",nextDate);
    
    //1.3.2 昨天
    NSDate *beforeDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60];
    NSLog(@"beforeDate:%@",beforeDate);

    //1.4 dateWithTimeIntervalSince1970:在1970年上加一個數值,該數值是一個時間戳數值
    NSDate *date1970 = [NSDate dateWithTimeIntervalSince1970:0];
    NSLog(@"date1970:%@",date1970);</span>
           

2. 擷取 時間戳數值

//2.timeIntervalSince1970:擷取日期距離1970時的時間戳
    NSTimeInterval time1970 = [date1 timeIntervalSince1970];
    NSLog(@"time1970:%f",time1970);
    
    //timeIntervalSinceNow:取得日期對象到目前日期時間的數值差
    NSTimeInterval timeNow = [nextDate timeIntervalSinceNow];
    NSLog(@"timeNow:%f",timeNow);
           

3.  日期的比較

//3.日期的比較
    //3.1 通過日期對象的compare 方法進行比較
    NSComparisonResult result = [nextDate compare:date1];
    if (result == NSOrderedDescending) {
        NSLog(@"nextDate > date1");
    }
    //3.2 通過比較時間戳
    if ([nextDate timeIntervalSince1970] > [date1 timeIntervalSince1970]) {
        NSLog(@"nextDate > date1");
    }
           

4.  日期對象格式化為字元串

//4.日期對象格式化為字元串: 2014-07-29 15:20:59 --> 2014年07月29日
    // 日期對象 -->  字元串
    NSDate *nowDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //設定日期的格式 預設會自動轉換為目前系統所在時區 東八區
    [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
    //設定時區
    NSTimeZone *timezone = [NSTimeZone timeZoneWithName:@"America/New_York"];
    [dateFormatter setTimeZone:timezone];
    
    //stringFromDate: 将日期對象格式化為字元串
    NSString *datestring = [dateFormatter stringFromDate:nowDate];
    NSLog(@"格式化之後:%@",datestring);
           

5. 将字元串格式化成日期對象

//5.将字元串格式化成日期對象
    //字元串 ——> 日期對象
    NSString *string = @"2013年07月29日 16:56:05";
    NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
    [dateFormatter2 setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
    //dateFromString: 将字元串格式化成日期對象
    NSDate *formatDate = [dateFormatter2 dateFromString:string];
    NSLog(@"%@",formatDate);
           

6.  擷取到所有時區的名稱

//6.擷取到所有時區的名稱
    NSArray *zoneNames = [NSTimeZone knownTimeZoneNames];
    for (NSString *name in zoneNames) {
        NSLog(@"%@",name);
    }
           

NSDate的方法還有其他,需要詳細了解可以直接參考API;