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

use*_*293 32 iphone cocoa-touch objective-c ios

我希望在用户的iPhone上获取当前的小时和分钟,以便在不显示状态栏的应用中显示.有一个简单的方法吗?

小智 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);
Run Code Online (Sandbox Code Playgroud)

  • 如果您的Xcode项目使用ARC(默认情况下应该是2014年),那么您不需要在dateFormatter上调用release. (4认同)

小智 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]);
}
Run Code Online (Sandbox Code Playgroud)

  • 请不要这样做.这就是日期格式化程序的用途. (2认同)

ZYi*_*iOS 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;
Run Code Online (Sandbox Code Playgroud)

我想你应该试试这个.时区非常重要.


Chr*_*nce 10

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

[[NSDate date] timeIntervalSince1970];
Run Code Online (Sandbox Code Playgroud)


Vin*_*hwa 6

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

double currentTime = CACurrentMediaTime();
Run Code Online (Sandbox Code Playgroud)