Mic*_*ker 9 objective-c nsdate ios4
我想知道是否有人可以用我的方法帮助我.我有以下方法,它会将NSDate对象的秒值清零:
- (NSDate *)dateWithZeroSeconds:(NSDate *)date {
NSTimeInterval time = round([date timeIntervalSinceReferenceDate] / 60.0) * 60.0;
return [NSDate dateWithTimeIntervalSinceReferenceDate:time];
}
Run Code Online (Sandbox Code Playgroud)
问题是当通过日期时,例如:
2011-03-16 18:21:43 +0000
Run Code Online (Sandbox Code Playgroud)
它返回:
2011-03-16 18:22:00 +0000
Run Code Online (Sandbox Code Playgroud)
我不希望这种舍入发生,因为它是实际指定日期的用户,因此它需要精确到他们请求的那一刻.
任何帮助是极大的赞赏.
hja*_*tij 30
使用地板而不是圆形:
- (NSDate *)dateWithZeroSeconds:(NSDate *)date
{
NSTimeInterval time = floor([date timeIntervalSinceReferenceDate] / 60.0) * 60.0;
return [NSDate dateWithTimeIntervalSinceReferenceDate:time];
}
Run Code Online (Sandbox Code Playgroud)
Cal*_*leb 24
使用NSCalendar和NSDateComponents获取日期的各个部分.将seconds组件设置为0,然后从该NSDateComponents创建新日期.
要完成,这里是使用NSCalendar和NSDateComponents引用iOS SDK 8.1的代码.
+ (NSDate *)truncateSecondsForDate:(NSDate *)fromDate;
{
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSCalendarUnit unitFlags = NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute;
NSDateComponents *fromDateComponents = [gregorian components:unitFlags fromDate:fromDate ];
return [gregorian dateFromComponents:fromDateComponents];
}
Run Code Online (Sandbox Code Playgroud)
请注意,从iOS 8开始,日历单元名称已更改.
| 归档时间: |
|
| 查看次数: |
6192 次 |
| 最近记录: |