1.在程序的开发中会用到时间,Foundation架构中有一个类NSDate可以很好地包装时间,在这个类中定义了很多方便的方法来使用时间。
// 创建一个时间对象
NSDate *date = [NSDatedate];
//打印出的时候是0时区的时间(北京-东8区)
NSLog(@"%@", date);
这样直接打印的时间是此时电脑时间0时区的时间,北京在东八区,所以打印出的时间应该是此时时间减去8。
2.NSDate包含了很多处理时间的类方法和对象方法
例如下面的类方法,返回了一个时间对象5秒后的时间对象
NSDate *date2 = [NSDatedateWithTimeInterval:5sinceDate:date];
3.下面的对象方法返回了从1970年到现在的时间间隔,单位是秒
//从1970开始走过的秒数
NSTimeInterval seconds = [date2timeIntervalSince1970];
在实际开发中,我们经常使用这个秒数,将这个秒数上传服务器或从服务器获取,用于记录时间,下面这个方法就是将从服务器上获取的秒数转换成一定时间格式的字符串
+ (NSString *)dateStringWithTimeStamp:(NSString *)timeStamp Format:(NSString *)format {
NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:format];
[formatter setTimeZone:timeZone];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeStamp longLongValue] / 1000];
NSString *result = [formatter stringFromDate:date];
return result;
}
4.还可以为时间设置相应地格式
//日期格式化类
NSDateFormatter *formatter = [[NSDateFormatteralloc]init];
// y年
M月
d 日
// m分 s
秒 H
(24)时 h(12)时
formatter.dateFormat =@"yyyy-MM-ddHH:mm:ss";
NSString *str = [formatterstringFromDate:date];
NSLog(@"%@", str);
这样打印出的时间就是相应格式的此时的时间
5.将一个特定的时间包装成NSDate对象,首先吧时间写成字符串对象
// 09/10/2011
NSString *time =@"2011/09/10 18:56";
然后定义相应的时间格式
NSDateFormatter*formatter = [[NSDateFormatteralloc]init];
formatter.dateFormat =@"yyyy/MM/dd HH:mm";
利用下面的对象方法将字符串对象转换车工NSDate类型
NSDate *date =[formatterdateFromString:time];
这样一个特定的时间就包装好了。