gpt4 book ai didi

macos - 如何获取 NSDate 的亚秒部分?

转载 作者:行者123 更新时间:2023-12-03 17:11:10 25 4
gpt4 key购买 nike

使用OS X v10.10.1 (优胜美地) 和 Xcode 6.1.1。

我觉得我一定忽略了一些简单而明显的事情,但我就是看不到它。我正在解析 NSDate 的各个部分,其值只是系统日期。

NSDate *currentDate = [NSDate date];
NSCalendar *systemCalendar = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [systemCalendar components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit) fromDate:currentSystemDate];

然后我可以得到秒数

NSInteger seconds = [dateComponents second];

但这只给了我完整的秒数。我还需要秒的小数部分。根据文档。我可以使用

NSInteger nanos = [dateComponents nanoseconds];

获取“接收器的纳秒单位数”。然而它不起作用。该方法是合法的,但是 nanos 设置为 NSInteger 的最大值。 (我推测)这是因为我没有在组件方法中提供合适的常量。问题是没有 NSNanosecondCalendarUnit 常量,我找不到任何合适的替代方案。

我可以使用日期组件构建一个新日期,然后减去两个以获得 NSTimeInterval,我相信这会给我我需要的东西,但我发现很难相信没有更直接的方法得到它。

Cocoa 中是否有一种简单直接的方法来计算 NSDate 的亚秒部分,或者我是否必须使用我刚才建议的方法?

最佳答案

您正在使用旧的已弃用的组件名称。新名称包括 NSCalendarUnitNanosecond。查看 NSCalendar.h,您将看到旧名称和新名称。

NSDateComponents *dateComponents = [systemCalendar components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitNanosecond) fromDate:currentSystemDate];

关于macos - 如何获取 NSDate 的亚秒部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27161301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com