免費開源的iOS開發學習平臺

                                                NSDate類(日期時間)基本使用

                                                在開發中有時候會需要使用到日期或者時間,蘋果也為開發者們提供了一個日期類以供使用,這就是NSDate。NSDate對象用來表示一個具體的時間點,它存儲的是世界標準時間,所以在使用的時候可能會需要根據不同的時區將時間轉換為本地時間。

                                                獲取日期與時間

                                                NSDate類中提供了date方法,用來獲取當前標準時區的時間,在通常情況下,我們需要本時區的時間,例如,在中國就需要東八區的時間。因此,通常需要把標準時間轉換成本地時間。下方的示例代碼中演示了如何獲取當前標準時間以及如何把標準時間轉換為本地時間。

                                                int main(int argc, const char * argv[]) {
                                                    @autoreleasepool {
                                                        //獲取時間
                                                        NSDate *date = [NSDate date];
                                                        //打印當前標準時間
                                                        NSLog(@"國際標準時間: %@", date);
                                                        /*將當前世界標準時間轉換成本地時間*/
                                                        // 獲取系統當前時區
                                                        NSTimeZone *zone = [NSTimeZone systemTimeZone];
                                                        // 獲取當前時區與格林尼治時間的間隔
                                                        NSInteger interval = [zone secondsFromGMTForDate:date];
                                                        // 獲取本地時間
                                                        NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:interval];
                                                        NSLog(@"當前時區時間: %@", localDate);
                                                    }
                                                    return 0;
                                                }
                                                

                                                運行結果如下,中國位于東八區和國際標準時間相差8個小時。

                                                日期格式轉換

                                                默認情況下,通過NSDate獲取的日期時間格式為:yyyy-MM-dd HH:mm:ss,我們有時喜歡更換為其他形式的日期格式,比如我們更加習慣把日期顯示為“2016年12月29日 11:07:32”這種形式,此時,我們就需要借助NSDateFormatter類,來對日期格式進行轉換。在使用NSDateFormatter類進行日期轉換之前,需要設置日期的格式,有如下關鍵字需要注意,特別需要關注的是大小寫嚴格區分。

                                                /* 格式化格式:
                                                     y 年
                                                     M 月
                                                     d 日
                                                     H \ h 時 (24小時制 \ 12小時制)
                                                     m 分
                                                     s 秒
                                                */
                                                
                                                • NSDate轉NSString時,我們需要使用NSDateFormatter類的stringFromDate方法
                                                - (NSString *)stringFromDate:(NSDate *)date;
                                                
                                                • NSString轉NSDate時,我們需要使用NSDateFormatter類的dateFromString方法
                                                - (nullable NSDate *)dateFromString:(NSString *)string;
                                                

                                                下方的示例代碼中,演示了如何改變日期的顯示形式以及日期與字符串之間的相互轉換。

                                                int main(int argc, const char * argv[]) {
                                                    @autoreleasepool {
                                                        //獲取時間
                                                        NSDate *date = [NSDate date];
                                                        //打印當前標準時間
                                                        NSLog(@"國際標準時間: %@", date);
                                                        /*將當前世界標準時間轉換成本地時間*/
                                                        // 獲取系統當前時區
                                                        NSTimeZone *zone = [NSTimeZone systemTimeZone];
                                                        // 獲取當前時區與格林尼治時間的間隔
                                                        NSInteger interval = [zone secondsFromGMTForDate:date];
                                                        // 獲取本地時間
                                                        NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:interval];
                                                        NSLog(@"當前時區時間: %@", localDate);
                                                        
                                                        /*日期格式轉換*/
                                                        NSDateFormatter *df = [[NSDateFormatter alloc] init];
                                                        //設置日期格式,注意大小寫嚴格區分
                                                        df.dateFormat =  @"yyyy年MM月dd日 HH:mm:ss";
                                                        // 將日期按照格式器設置的格式轉化為字符串
                                                        NSString *date2string = [df stringFromDate:date];
                                                        NSLog(@"日期轉字符串:%@", date2string);
                                                        // 將格式器格式的日期字符串轉換成日期對象
                                                        NSDate *string2date = [df dateFromString:date2string];
                                                        NSLog(@"字符串轉日期:%@", string2date);
                                                    }
                                                    return 0;
                                                }
                                                

                                                運行結果:

                                                其他常用操作

                                                除了創建NSDate日期對象以及對日期對象的格式進行轉換之外,NSDate類中還有如下幾個方法也相對常用。

                                                • 比較兩個時間對象的先后,可以使用earlierDate以及laterDate方法*
                                                - (NSDate *)earlierDate:(NSDate *)anotherDate;
                                                - (NSDate *)laterDate:(NSDate *)anotherDate;
                                                
                                                • 比較兩個時間的間隔,可以使用timeIntervalSinceDate:方法,同時由于程序運行耗時的原因,會有微小的誤差;
                                                - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;
                                                
                                                • 比較兩個日期是否相等,可以使用isEqualToDate:方法.
                                                - (BOOL)isEqualToDate:(NSDate *)otherDate;
                                                

                                                下方的示例代碼中,演示了日期對象之間進行各種比較操作。

                                                void dateOperation () {
                                                    NSDate *date1 = [NSDate date];
                                                    NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:10];
                                                    
                                                    //比較兩個時間的先后
                                                    NSDate *tempDate = [[NSDate alloc] init];
                                                    // 返回比較早的那個時間
                                                    tempDate = [date1 earlierDate:date2];
                                                    NSLog(@"earlierDate : %@", tempDate);
                                                    // 返回比較晚的那個時間
                                                    tempDate = [date1 laterDate:date2];
                                                    NSLog(@"laterDate : %@", tempDate);
                                                    
                                                    //比較兩個時間的間隔(程序運行耗時的原因,會有微小的誤差)
                                                    NSTimeInterval timeInterval = [date2 timeIntervalSinceDate:date1];
                                                    NSLog(@"interval = %f", timeInterval);
                                                    
                                                    // 比較兩個日期是否相等
                                                    if ([date1 isEqualToDate:date2]) {
                                                        NSLog(@"date1 與 date2 相同");
                                                    } else {
                                                        NSLog(@"date1 與 date2 不同");
                                                    }
                                                }
                                                

                                                運行結果:

                                                示例代碼

                                                https://github.com/99ios/4.6


                                                欧美超级精品一级A片|欧美一级黄色视频|国产精品自在在线午夜免费|4444亚洲人成无码网在线观看|亚洲ⅴa曰本va欧美va视频