Foundation Framework 日期 NSDate

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值