程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Objective-C學習筆記_NSDate、NSDateFormatter

Objective-C學習筆記_NSDate、NSDateFormatter

編輯:關於C語言

Objective-C學習筆記_NSDate、NSDateFormatter


一、掌握NSDate的使?

在iOS開發中,NSDate的使用場景很多,例如,聊天程序裡的時間顯示(幾分鐘前、幾小時前、幾天前)的計算;網絡請求中的時間戳(計算當前時間距離1970年1?1?的秒數)。

NSDate是Cocoa中用於處理日期和時間的基礎類,封裝了某?給定的時刻(含日期、時間、時區)。使用+date方法獲取當前時間。例如:NSDate *nowDate = [NSDate date]; 注意NSLog(@“%@”, nowDate); ?論你是哪個時區的時間,打印的總是0時區時間。

NSTimeinterval

NSTimeInterval(double類型),用來表?以秒為單位的時間間隔。可以使用-initWithTimeIntervalSinceNow:方法傳入?個NSTimeInterval參數,創建一個NSDate對象。

例如:NSDate *tomorrowDate = [[NSDate alloc] initWithTimeIntervalSinceNow: 24 * 60 * 60];
NSDate *yesterdayDate = [[NSDate alloc] initWithTimeIntervalSinceNow: -1 * 24 * 60 * 60];取兩個時間對象的間隔:NSTimeinterval = [tomorrowDate timeIntervalSinceDate: yesterdayDate];

具體實現代碼如下:

#pragma mark ** NSDate 日期類
        NSDate *date = [NSDate date];  /* 0時區的時間 */
        NSLog(@%@, date);

        /* 0時區的時間 + 秒數 = 當前時區的時間 */
        /* 獲取當前的時區 */
        NSTimeZone *zone = [NSTimeZone systemTimeZone];
        NSLog(@%@, zone);

        NSTimeZone *zone2 = [NSTimeZone localTimeZone];
        NSLog(@%@, zone2);

        /* 獲取和0時區相差的秒數 */
        NSInteger seconds = [zone secondsFromGMTForDate:date];

        /* 當前時間 */
        NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:seconds];
        NSLog(@localDate: %@, localDate);

        NSDate *local2 = [NSDate dateWithTimeIntervalSinceNow:8 * 3600];
        NSLog(@local2: %@, local2);

        /* 明天時間 */
        NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:8 * 3600 + 24 * 3600];
        NSLog(@tomorrow: %@, tomorrow);

        /* 昨天時間 */
        NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:8 * 3600 - 24 * 3600];
        NSLog(@yesterday: %@, yesterday);

#pragma mark ** NSTimeInterval 時間間隔類
        NSTimeInterval timeInterval = [tomorrow timeIntervalSinceDate:yesterday];
        NSLog(@timeInterval: %lf, timeInterval);

        NSTimeInterval timeInterval2 = [localDate timeIntervalSince1970];
        NSLog(@timeInterval2: %lf, timeInterval2);

        /* 快速獲取當前時區的時間 */
        NSDate *dateLocal = [NSDate dateWithTimeIntervalSinceNow:[NSTimeZone localTimeZone].secondsFromGMT];
        NSLog(@dateLocal: %@, dateLocal);

二、掌握NSDateFormatter的使?

NSDateFormatter是iOS中的日期格式類,功能是實現NSString和NSDate的互轉。常見的時間格式化字符串有:y 年、M 月份、d 天、H 小時(24小時制)、h(12小時制)、am | pm 上午| 下午、m 分鐘、s 秒數等。指定的日期格式:NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@yyyy-MM-dd HH:mm:ss];

NSDate轉NSString

日期轉化為字符串:

NSDateFormatter*formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@yyyy-MM-dd hh:mm:ss];
NSString *dateString = [formatter stringFromDate: [NSDate date]];

NSString轉NSDate

時間字符串轉化為相對應的?期:

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@yyyy-MM-dd HH:mm:ss];
NSString *dateStr = @”2008-08-08 20:08:08”;
NSDate *date = [formatter dateFromString:dateStr];

具體實現代碼如下:

#pragma mark ** NSDateFormatter
        /* y 年
         * M 月
         * d 日
         * h 小時(12), H(24)
         * m 分
         * s 秒
         * a 顯示上下午
         * z 時區
         * eee 星期
         * G 公元
         */

        /* NSDate 轉 字符串 */
        /* 方法1, 字符串format方法 */
        NSString *string1 = [NSString stringWithFormat:@%@, dateLocal];
        NSLog(@string1: %@, string1);

        /* 方法2, NSDateFormatter格式 */
        /* 步驟: 1. 新建一個格式
         *      2. 按照格式進行轉換
         */
        NSDateFormatter *format1 = [[NSDateFormatter alloc] init];

        [format1 setAMSymbol:@AM];
        [format1 setPMSymbol:@PM];

        [format1 setDateFormat:@yyyy年MM月dd日 HH:mm:ss];
        NSString *string2 = [format1 stringFromDate:date];
        NSLog(@string2: %@, string2);
        /* NSDateFormat 自動轉換為當前系統時區 */

        /* 字符串 轉 NSDate */
        NSString *string3 = @2015-04-16 19:44:16;
        NSDate *date11 = [format1 dateFromString:string3];
        NSLog(@date11: %@, date11);

        /* 練習: 定義一個NSDateFormatter, 設置合適的格式
         * 將字符串@“2014年05?01日 10點23分18秒”轉換為NSDate對象。
         */
        NSDateFormatter *exFormat = [[NSDateFormatter alloc] init];
        [exFormat setDateFormat:@yyyy年MM月dd日 HH點mm分ss秒];
        NSString *timeStr = @2014年05月01日 10點23分18秒;
        NSDate *dateStr = [[exFormat dateFromString:timeStr] dateByAddingTimeInterval:[NSTimeZone localTimeZone].secondsFromGMT];
        NSLog(@timeStrDate: %@, dateStr);

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved