(1)日期的最主要知识点就是日期转换成字符串格式化输出,相反就是依照某个格式把字符串转换成日期。
(2)一般关于时区的设置非常少用到,仅仅要了解就可以。
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //获取当前时间。日期正确。时间错误,是由于时区的设置问题,可是格式化输出用HH:mm:ss貌似是正常的 NSDate *date1=[NSDate date]; NSLog(@"%@",date1); //想获得昨天此时此刻的时间,则须要用到减法,先把秒算出来,然后减去就可以,不多addTimeInterval方法已经被禁止使用了 //NSTimeInterval *oneDay=24*60*60; //NSDate *yesterday1=[date1 addTimeInterval:-oneDay]; //比較两个时间 NSDate *date2=[NSDate date]; [date1 isEqualToDate:date2]; //取时间较早的那个 [date2 earlierDate:date1]; //取较晚的那个 [date2 laterDate:date1]; //格式化日期。事实上就是利用一个日期格式化对象把日期转换成字符串了 //先定义一个NSDateFormatter对象。然后给这个格式对象定义成自己想要的格式,然后用它去转化其它日期就可以 NSDateFormatter *format1=[[NSDateFormatter alloc]init]; [format1 setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; NSString *str1=[format1 stringFromDate:date1]; NSLog(@"%@",str1); //把字符串转换成日期 //和上边相似。仍然须要日期格式化对象,可是调用的方法从stringFromDate变成 //由于时区设置的问题。这个日期被减去了一天 NSDateFormatter *format2=[[NSDateFormatter alloc]init]; [format2 setDateFormat:@"yyyy/MM/dd"]; NSString *str2=@"2014/10/11"; NSLog(@"%@",[format2 dateFromString:str2]); //直接输出当前时间date1时又时区错误。而用格式化后就正常了 NSDateFormatter *format3=[[NSDateFormatter alloc]init]; [format3 setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; //下面语句能够省略,假设把GTM变成UTC的话,就会存在时差问题,究竟是哪一种。届时依据实际情况改动 [format3 setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GTM"]]; NSLog(@"%@",[format3 stringFromDate:date1]); //当然,我们能够手动设置时区 } return 0; }