NSDate的常用用法
1.创建或初始化可用以下方法
用于创建NSDate实例的类方法有+ (id)date;
返回当前时间
+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;返回以当前时间为基准,然后过了secs秒的时间
+(id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs;
返回以2001/01/01 GMT为基准,然后过了secs秒的时间
+(id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
返回以1970/01/01 GMT为基准,然后过了secs秒的时间
+ (id)distantFuture;
返回很多年以后的未来的某⼀一天。比如你需要⼀一个比现在(Now)晚(大)很长时间的时间值,则可以调用该方法。
+ (id)distantPast;
返回很多年以前的某⼀一天。
比如你需要⼀一个比现在(Now)早(小)大很长时间的时间值,则可以调用该方法。
用于创建NSDate实例的实例方法有
- (id)addTimeInterval:(NSTimeInterval)secs;返回以目前的实例中保存的时间为基准,然后过了secs秒的时间
用于初始化NSDate实例的实例方法有- (id)init;
初始化为当前时间。类似date方法
-(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs;
初始化为以2001/01/01 GMT为基准,然后过了secs秒的时间。类似dateWithTimeIntervalSinceReferenceDate:方法
- (id)initWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate *)refDate;
初始化为以refDate为基准,然后过了secs秒的时间
- (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;初始化为以当前时间为基准,然后过了secs秒的时间
3.取回时间间隔可用以下方法
- (NSTimeInterval)timeIntervalSinceDate:(NSDate*)refDate;
以refDate为基准时间,返回实例保存的时间与refDate的时间间隔
- (NSTimeInterval)timeIntervalSinceNow;
以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时间间隔
- (NSTimeInterval)timeIntervalSince1970;
以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔
- (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT的时间间隔
+ (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT为基准时间,返回当前时间(Now)与2001/01/01 GMT的时间间隔
*/
//时区类
//获得系统时区
NSTimeZone*tz = [NSTimeZonesystemTimeZone];
//获得当前时间距离GMT时间相差的秒数!
NSIntegerseconds = [tz secondsFromGMTForDate:[NSDate
date]];
//以[NSDate date]时间为基准,间隔seconds秒后的时间!NSDate*localDate = [NSDate
dateWithTimeInterval:secondssinceDate:[NSDatedate]];//北京时间
NSLog(@"localDate = %@",localDate);
//日期和字符串相互转换
//日期格式的类!
NSDateFormatter*df = [[NSDateFormatteralloc]init];// 2013-11-27 11:00:57
// HH 24小时进制hh 12小时进制
df.dateFormat= @"yyyy-MM-dd HH:mm:ss";
NSString*dateStr = [df stringFromDate:[NSDatedate]];
NSLog(@"dateStr= %@", dateStr);
NSDate *dateTest = [df dateFromString:@"2013-11-27 11:00:57"];
NSLog(@"dateTest= %@", dateTest);//默认是格林威治时间需要转化为北京时间
NSTimeZone*tz = [NSTimeZonesystemTimeZone];//获得dateTest距离GMT时间相差的秒数!NSIntegerseconds = [tz
secondsFromGMTForDate:dateTest];
NSDate*localDate = [NSDatedateWithTimeInterval:secondssinceDate: dateTest];//北京时间
NSLog(@"localDate = %@",localDate);
注:
NSDate *date = [NSDate date]; //这个方法有时有8小时时差,有时没有
//最好还是加上下面的这段代码
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date dateByAddingTimeInterval: interval];
感谢参考,希望对您有所帮助,如有纰漏请指正。