在Objective-C中,为了获得当前的小时和分钟,我们需要使用NSDateComponents和NSCalendar?
我想以整数的forms获得当前的小时和分钟。 所以如果现在是上午3:16,我想得到两个整数:3和16。
但它看起来像[NSDate date]
会给[NSDate date]
1970年以来的秒数,或者它可以给出一个当前时间表示的string,但是没有简单的方法将它们作为整数?
我看到在当前时间的post,但它涉及NSDateComponents
和NSCalendar
? 这太复杂了……所有需要的东西都是这样的
NSDate *date = [NSDate date]; int hour = [date getHour]; // which is not possible
有没有比使用3类NSDate
, NSDateComponents
和NSCalendar
获取当前小时作为一个整数更简单的方法,或者通常在Objective-C中,我们通常仍然使用C语言的localtime
和tm
来获取小时为整数?
NSDate
只是持有一定的参考date以来的时间,以获得更多的有意义的数字(例如,在照顾DST,闰年和所有其他愚蠢的时间的东西),你必须使用NSDateComponents
与适当NSCalendar
。
如何解释自1970年以来的秒数取决于您正在使用的日历。 根本没有别的select。 幸运的是,build立起来并不困难。 请参阅“数据和时间编程指南”中的大量示例。 在你的情况下:
// 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];
所以它真的不那么复杂。
另外请注意,您可以创build一个“类别”来将其封装为:
@interface NSDate (MyGregorianDateComponents) - (NSInteger) getGregorianHour; - (NSInteger) getGregorianMinute; @end
我的class可以帮忙。 https://github.com/TjeerdVurig/Vurig-Calendar/blob/master/Vurig%20Calendar/NSDate%2Bconvenience.m
我相信你可以弄清楚分钟:)