Получить текущее местное время на iPhone? - PullRequest
32 голосов
/ 19 февраля 2009

Я хочу получить текущие часы и минуты на iPhone пользователя для отображения в приложении, которое не показывает строку состояния. Есть ли простой способ сделать это?

Ответы [ 7 ]

112 голосов
/ 23 октября 2009
// 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);
13 голосов
/ 14 августа 2012
-(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]);
}
12 голосов
/ 29 июня 2011
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;

Я думаю, тебе стоит попробовать это. Часовой пояс важен.

10 голосов
/ 19 февраля 2009

См. этот аналогичный вопрос для ответа. Вам придется изменить его на свой формат даты.

[[NSDate date] timeIntervalSince1970];
6 голосов
/ 26 ноября 2012

если вы хотите рассчитать временные интервалы, вам лучше использовать CACurrentMediaTime

double currentTime = CACurrentMediaTime();
0 голосов
/ 05 апреля 2017

CFAbsoluteTimeGetCurrent ()

Абсолютное время измеряется в секундах относительно абсолютной контрольной даты 1 января 2001 года 00:00:00 по Гринвичу. Положительное значение представляет дату после контрольной даты, отрицательное значение представляет дату перед ней. Например, абсолютное время -32940326 эквивалентно 16 декабря 1999 года в 17:54:34. Повторные вызовы этой функции не гарантируют монотонно увеличивающиеся результаты. Системное время может уменьшиться из-за синхронизации с внешними временными привязками или из-за явной смены часов пользователем.

0 голосов
/ 23 октября 2016

более короткий подход

NSDate * now = [NSDate date];
timeLabel.text = [NSDateFormatter localizedStringFromDate:now
                                                dateStyle:NSDateFormatterNoStyle
                                                timeStyle:NSDateFormatterShortStyle];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...