ios – 如何为NSDate设置秒为零

前端之家收集整理的这篇文章主要介绍了ios – 如何为NSDate设置秒为零前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_0@
我试图从UIDatePicker获取NSDate,但它不断返回一个约20秒的日期时间.如何手动设置NSDate的第二个为零?

解决方法

NSDate是不可变的,所以你不能修改它的时间.但是,您可以创建一个新的日期对象,它可以捕捉到最近的分钟:
NSTimeInterval time = floor([date timeIntervalSinceReferenceDate] / 60.0) * 60.0;
NSDate *minute = [NSDate dateWithTimeIntervalSinceReferenceDate:time];

编辑回答Uli的评论

NSDate的参考日期是2001年1月1日,格林尼治标准时间0:00.从那时起,已经有了两个闰秒:2005和2010,所以由[NSDate timeIntervalSinceReferenceDate]返回的值应该被关闭两秒钟.

情况并非如此:timeIntervalSinceReferenceDate与墙壁时间完全同步.

在回答这个问题时,我并没有确定这是真的.我刚刚认为Mac OS将会在behave as UNIX time(1970 epoch)上做到:POSIX保证每天的启动时间为86,400秒.

看看从NSDate返回的值,这个假设似乎是正确的,但是肯定会很高兴找到一个明确的(记录的)声明.

猜你在找的iOS相关文章