如何使用Objective-C获取Cocoa中的当前小时?
答案 0 :(得分:38)
首先,您应该阅读Dates and Times Programming Topics for Cocoa。这将使您很好地理解使用Cocoa中提供的各种日期/时间/日历对象进行日期的高级转换。
但是,此代码片段将回答您的具体问题:
- (NSInteger)currentHour
{
// In practice, these calls can be combined
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSHourCalendarUnit fromDate:now];
return [components hour];
}
答案 1 :(得分:6)
一种方法是使用NSCalendar和NSDateComponents
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSHourCalendarUnit fromDate:now];
NSInteger hour = [components hour];
答案 2 :(得分:2)
我也是Cocoa的新手,我很高兴我发现了这一点。我还想包括你可以轻松地将这个函数作为一个函数返回一个NSDateComponents对象中的当前小时,分钟和秒。像这样:
// Function Declaration (*.h file)
-(NSDateComponents *)getCurrentDateTime:(NSDate *)date;
// Implementation
-(NSDateComponents *)getCurrentDateTime:(NSDate *)date
{
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:NSHourCalendarUnit + NSMinuteCalendarUnit + NSSecondCalendarUnit fromDate:now];
return comps;
}
// call and usage
NSDateComponents *today = [self getCurrentDateTime:[NSDate date]];
hour = [today hour];
minute = [today minute];
second = [today second];
正如您所看到的,NSCalendar对象中的components参数是一个明智的枚举,您可以使用'+'
组合枚举值我想我会做出贡献,因为我可以使用这些例子创建我的。
答案 3 :(得分:1)
[NSDate date]
这是当前时间,根据需要解析小时。你没有详细说明你的意思是什么时间 - 例如格式化为当前时区?还是另一个?
答案 4 :(得分:0)
Swift版
func currentHour() -> Int {
let now = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Hour, fromDate: now)
return components.hour
}