1 時間的獲取
NSDate *date = [NSDate date]; 獲取GMT時間。
NSTimeZone *zone = [NSTimeZone systemTimeZone]; 獲得系統時區
NSTimeZone *localTime = [NSTimeZone localTimeZone]; 獲取本地時區
NSInteger timeOff = [zone secondsFromGMT]; zone時區和格林尼治時間差
NSDate *timeOffDate = [date dateByAddingTimeInterval:timeOff]; 時間轉換
注:GMT 0:00 格林威治標准時間; UTC +00:00 校准的全球時間; CCD +08:00 中國標准時間 [來自百度百科]
2 獲取當前時間的各種信息
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *startDate = [NSDate new];
NSDateComponents *dateComps = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:startDate];
int year = [dateComps year];
int month = [dateComps month];
int day = [dateComps day];
int hour = [dateComps hour];
int minute = [dateComps minute];
int second = [dateComps second];
NSLog(@"%d-%d-%d-%d-%d-%d",year,month,day,hour,minute,second); 顯示的是本地時區的時間
NSDate *newDate = [cal dateFromComponents:dateComps]; 這個時間是GTM時間
NSRange range = [calendarrangeOfUnit:NSDayCalendarUnitinUnit:NSMonthCalendarUnitforDate:[NSDatedate]];
NSUInteger numberOfDaysInMonth = range.length; 獲取當前月份的天數
3 NSString/NSDate 之間的轉換
NSDateFormatter *dataFormant = [[NSDateFormatter alloc] init];
[dataFormant setDateFormat: @"yyyy-MM-dd HH:mm:ss.S"];
NSString *dateStr = [dataFormant stringFromDate:[NSDate new]]; 顯示:2016-10-31 10:21:30.5
兩者之間的轉換都用到了了NSDateFormatter,類型差不多,設置好格式后,用stringFromDate或者dateFromString進行轉換
注意:NSString轉NSDate時,注意待轉換的NSString格式應該和設置的轉換格式相同。
格式化參數如下:
G: 公元時代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,顯示為1-12
MMM: 月,顯示為英文月份簡寫,如 Jan//跟系統語言版本有關系,中文顯示“3月”,英文顯示“Jan”
MMMM: 月,顯示為英文月份全稱,如 Janualy//跟系統語言版本有關系,中文顯示“3月”,英文顯示“Jan”
dd: 日,2位數表示,如02
d: 日,1-2位顯示,如 2
EEE: 簡寫星期幾,如Sun
EEEE: 全寫星期幾,如Sunday
aa: 上下午,AM/PM
H: 時,24小時制,0-23
K:時,12小時制,0-11
m: 分,1-2位
mm: 分,2位
s: 秒,1-2位
ss: 秒,2位
S: 毫秒