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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/566265/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-30 15:39:10  来源:igfitidea点击:

Retrieving current local time on iPhone?

iphoneiosobjective-ccocoa-touch

提问by user21293

I'm looking to get the current hour and minute on a user's iPhone for display in an app that doesn't show the status bar. Is there a simple way to do this?

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

回答by mixolution

// 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);

回答by Nitin Malguri

-(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]);
}

回答by ZYiOS

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;

I think you should try this. The timeZone is important.

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

回答by Chris Ballance

See thissimilar question for an answer. You will have to change it to your date format.

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

[[NSDate date] timeIntervalSince1970];

回答by Vinay W

if you are looking to calculate time intervals, you are better off using CACurrentMediaTime

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

double currentTime = CACurrentMediaTime();

回答by Jim75

A shorter approach

更短的方法

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

回答by Inder Kumar Rathore

CFAbsoluteTimeGetCurrent()

CFAbsoluteTimeGetCurrent()

Absolute time is measured in seconds relative to the absolute reference date of Jan 1 2001 00:00:00 GMT. A positive value represents a date after the reference date, a negative value represents a date before it. For example, the absolute time -32940326 is equivalent to December 16th, 1999 at 17:54:34. Repeated calls to this function do not guarantee monotonically increasing results. The system time may decrease due to synchronization with external time references or due to an explicit user change of the clock.

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