objective-c - 在 Objective-C 中,要以整数形式获取当前的小时和分钟,我们需要使用 NSDateComponents 和 NSCalendar?

标签 objective-c ios nsdate nscalendar nsdatecomponents

我想以整数形式获取当前的小时和分钟。因此,如果现在是凌晨 3:16,我想得到两个整数:3 和 16。

但看起来 [NSDate date] 会给出自 1970 年以来的秒数,或者它可以给出当前时间表示的字符串,但是没有简单的方法将它们作为整数获取?

我在 Getting current time 中看到一个帖子,但它涉及 NSDateComponentsNSCalendar?那太复杂了......所需要的只是像

这样的东西
NSDate *date = [NSDate date];
int hour = [date getHour];     // which is not possible

有没有比使用 3 个类 NSDateNSDateComponentsNSCalendar 更简单的方法来获取当前小时作为整数,或者通常, 在 Objective-C 中,我们通常还会使用 C 语言的 localtimetm 来获取整数小时吗?

最佳答案

如何解释自 1970 年以来的秒数取决于您使用的日历。别无选择。幸运的是,设置起来并不困难。有关大量示例,请参阅“数据和时间编程指南”。在你的情况下:

// Assume you have a 'date'
NSCalendar *gregorianCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComps = [gregorianCal components: (NSHourCalendarUnit | NSMinuteCalendarUnit)
                                              fromDate: date];
// Then use it
[dateComps minute];
[dateComps hour];

所以它真的没有那么复杂。

另请注意,您可以创建一个“类类别”来将其封装为:

 @interface NSDate (MyGregorianDateComponents)
  - (NSInteger) getGregorianHour;
  - (NSInteger) getGregorianMinute;
  @end

关于objective-c - 在 Objective-C 中,要以整数形式获取当前的小时和分钟,我们需要使用 NSDateComponents 和 NSCalendar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10861433/

相关文章:

ios - UITableViewCell 在不改变其内容布局的情况下调整高度

ios - CocoaPods 找不到 pod 的兼容版本 "boost-for-react-native"

ios - 使用armv7s无法从atos获得正确的代码位置

iOS:将 UTC NSDate 转换为本地时区

ios - 将 Objective-C block 转换为 Swift

objective-c - "Expected ' ; swift 下的 ' after top level declarator"

ios - 没有收到详细 View 的数据

objective-c - 如何正确使用 NSTimeInterval?

date - NSDate 从 Swift 2.3 到 Date 从 Swift 3 转换

iphone - 将所有对象属性放入 NSDictionary 或 NSArray