如何使用Cocoa获取当前时间?

时间:2009-04-13 05:55:35

标签: objective-c cocoa

如何使用Objective-C获取Cocoa中的当前小时?

5 个答案:

答案 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
}