NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间。
1、获取当前时间
NSDate * dt = [NSDate date];
//获取的时间date减去24小时的时间(昨天的这个时候)
NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];
2、将 NSDate 与 NSString 之间的转换
使用 NSDateFormatter 可以很方便的将 NSDate 与 NSString 进行格式转换
NSDateFormatter *form= [[NSDateFormatter alloc] init];
[form setDateFormat:@"H:mm"]; // 设置日期的输出格式
NSString *text = [form stringFromDate:dateObject]; // 格式化 NSDate 到字符串
NSDate *date=[form dateFromString:@"11:00"]; // 将字符串转换成 NSData
格式化表达式
G: 公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,显示为1-12
MMM: 月,显示为英文月份简写,如 Jan
MMMM: 月,显示为英文月份全称,如 Janualy
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: 毫秒
例如:
G yyyy/MM/dd(EEE) K:mm:ss
格式化后为:
AD 2010/11/25(Thu) 00:55:15
3、获取时间间隔多少秒
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)refDate;
以refDate为基准时间,返回实例保存的时间与refDate的间隔秒数。
NSTimeInterval 并不是对象,是 double 类型,是由c定义的: typedef double NSTimeInterval;
将间隔的秒数折算成天、小时、分钟、秒数的代码:
int days = ((int)time)/(3600*24);
int hours = ((int)time)%(3600*24)/3600;
int minutes = ((int)time)%(3600*24)%3600/60;
int seconds = ((int)time)%(3600*24)%3600%60;
NSString *dateContent = NSString stringWithFormat:@"%i小时%i分钟",hours,minutes];
4、日期之间的比较
- (BOOL)isEqualToDate:(NSDate *)otherDate;
与otherDate比较,相同返回YES
- (NSDate *)earlierDate:(NSDate *)anotherDate;
与anotherDate比较,返回较早的那个日期
- (NSDate *)laterDate:(NSDate *)anotherDate;
与anotherDate比较,返回较晚的那个日期
- (NSComparisonResult)compare:(NSDate *)other;
该方法用于排序时调用:
. 当实例保存的日期值与anotherDate相同时返回NSOrderedSame
. 当实例保存的日期值晚于anotherDate时返回NSOrderedDescending
. 当实例保存的日期值早于anotherDate时返回NSOrderedAscending