(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;
}