作者热门文章
- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在尝试从 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 GMT。从那以后添加了两个闰秒:2005 年和 2010 年,因此 [NSDate timeIntervalSinceReferenceDate]
返回的值应该相差两秒。
事实并非如此:timeIntervalSinceReferenceDate
与墙上时间完全同步。
在回答这个问题时,我没有确定这是真的。我只是假设 Mac OS 会 behave as UNIX time (1970 纪元)确实如此:POSIX 保证每一天都以 86,400 秒的倍数开始。
查看从 NSDate
返回的值,这个假设似乎是正确的,但找到一个明确的(记录的)声明肯定会很好。
关于ios - 如何将 NSDate 的秒数设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525825/
我是一名优秀的程序员,十分优秀!