在介紹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;