在iPhone上检索当前当地时间?

时间:2009-02-19 17:12:59

标签: iphone ios objective-c cocoa-touch

我希望在用户的iPhone上显示当前的小时和分钟,以便在不显示状态栏的应用中显示。有一种简单的方法可以做到这一点吗?

7 个答案:

答案 0 :(得分:112)

// get current date/time
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *currentTime = [dateFormatter stringFromDate:today];
[dateFormatter release];
NSLog(@"User's current time in their preference format:%@",currentTime);

答案 1 :(得分:13)

-(void)currentTime
{    
    //Get current time
    NSDate* now = [NSDate date];
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *dateComponents = [gregorian components:(NSCalendarUnitHour  | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:now];
    NSInteger hour = [dateComponents hour];
    NSString *am_OR_pm=@"AM";

    if (hour>12)
    {
        hour=hour%12;

        am_OR_pm = @"PM";
    }

    NSInteger minute = [dateComponents minute];
    NSInteger second = [dateComponents second];
    [gregorian release];

    NSLog(@"Current Time  %@",[NSString stringWithFormat:@"%02ld:%02ld:%02ld %@", (long)hour, (long)minute, (long)second,am_OR_pm]);
}

答案 2 :(得分:12)

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *currentTime = [dateFormatter stringFromDate:[NSDate date]]
[dateFormatter release]; dateFormatter = nil;

我想你应该试试这个。时区很重要。

答案 3 :(得分:10)

请参阅this类似问题的答案。您必须将其更改为日期格式。

[[NSDate date] timeIntervalSince1970];

答案 4 :(得分:6)

如果您要计算时间间隔,最好使用CACurrentMediaTime

double currentTime = CACurrentMediaTime();

答案 5 :(得分:0)

更短的方法

NSDate * now = [NSDate date];
timeLabel.text = [NSDateFormatter localizedStringFromDate:now
                                                dateStyle:NSDateFormatterNoStyle
                                                timeStyle:NSDateFormatterShortStyle];

答案 6 :(得分:0)

CFAbsoluteTimeGetCurrent()

  

绝对时间以秒为单位,相对于2001年1月1日00:00:00 GMT的绝对参考日期。正值表示参考日期之后的日期,负值表示之前的日期。例如,绝对时间-32940326相当于1999年12月16日17:54:34。重复调用此函数并不能保证单调增加结果。由于与外部时间参考同步或由于时钟的明确用户更改,系统时间可能会减少。