ios – 如何为NSDate设置秒为零

我试图从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 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...