Ios 如何在Objective C中显示时间

Ios 如何在Objective C中显示时间,ios,objective-c,cocoa-touch,nsdate,Ios,Objective C,Cocoa Touch,Nsdate,我在Objective-C中有一个应用程序。我有一个NSDate,日期为2014-01-01,我已将其显示在屏幕上 我想要的是一种在一个时间间隔后增加日期的方法。例如,每5秒,日期应增加一天 我希望这独立于其他任务,可能在另一个线程上发生。我将在此日期更新期间进行其他操作 编辑:解决了 使用NSTimer 当它触发时,更改日期。 但你需要了解NSDate。 你所拥有的暗示是午夜。 NSDate是一个精确的时间点,这意味着时间是它的一部分。 NSTimeZone也是它的一部分。 NSCalenda

我在
Objective-C
中有一个应用程序。我有一个
NSDate
,日期为
2014-01-01
,我已将其显示在屏幕上

我想要的是一种在一个时间间隔后增加日期的方法。例如,每5秒,日期应增加一天

我希望这独立于其他任务,可能在另一个线程上发生。我将在此日期更新期间进行其他操作

编辑:解决了

使用NSTimer 当它触发时,更改日期。 但你需要了解NSDate。 你所拥有的暗示是午夜。 NSDate是一个精确的时间点,这意味着时间是它的一部分。 NSTimeZone也是它的一部分。 NSCalendar也是。 它们一起从NSTimeInterval值中为您提供了一个人类可读的值,NSDate将该值包装在对象中,并且是自参考日期起的秒数(正或负)

问题是有些约会没有午夜,有些约会有两个午夜。 因此,隐含的午夜将破坏日历计算。 把时间定在中午。
然后使用10.9中的一个很棒的新方法,但只在NSDate.h标题中使用,而不在文档中使用

你试过什么?首先,我将增加主线程上的
NSDate
,以熟悉其方法。然后,集中精力将该操作移动到后台线程。我知道如何增加日期,只是不知道如何独立于其他操作进行。我希望这样,无论用户在做什么,日期都会不断增加。我不知道应该把增量放在哪里。xcode和xcode 5都不是编程语言。对不起,我的错。传入的edit.xcode 5不是运行时环境。这只是一个编辑。我理解你对NSTimer和NSDate的其他方面所说的话。我实际上已经涵盖了所有这些方面,只是没有提到它们。我不明白的是我怎么会有一个重复的NSTimer。如果我把计时器放在viewDidLoad之类的地方,执行不会永远卡在那里吗?基本上,我如何在后台执行NSTimer?另外,我要澄清的是,我的问题不是NSDate或NSTimer方法。我的问题是我应该把NSTimer放在哪里。计时器需要是一个对象的属性,该对象的寿命与你想要的一样长。您可以随时使计时器失效。它可能在你的应用程序代理中,除非它需要与其他内容关联。是的,谢谢!我不知道NSTimer是独立运行的,但Alan发布了代码,因此我现在知道您的解决方案是正确的。谢谢谢谢,但是在viewDidLoad中[自我更新]不会只运行一次吗?那么计时器将只运行两次?在viewDidLoad之后,当我希望从我的应用程序调用其他方法时,会怎么样?更新函数只调用一次(当视图确实加载时),但更新函数中的计时器每秒调用addOneDay函数。。。如果这回答了你的问题…?:)没关系,非常感谢你!这很好用!我试过了。
    @implementation ViewController{

        NSDateFormatter *dateFormat;
        NSString *changedDate;
    }


    -(void)viewDidLoad
    {
        [super viewDidLoad];
        [self getDate];
        [self update]; 
    }

-(void)getDate{

    NSDate *today = [NSDate date];
    dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd/MM/yyyy"];
    NSString *dateString = [dateFormat stringFromDate:today];
    NSLog(@"Today is: %@", dateString);
    changedDate = dateString;

}
-(void)update{

    NSDate *d = [NSDate dateWithTimeIntervalSinceNow: 0];
    NSTimer *t = [[NSTimer alloc] initWithFireDate: d
                                          interval: 1
                                            target: self
                                          selector:@selector(addOneDay:)
                                          userInfo:nil
                                           repeats:YES];

    NSRunLoop *runner = [NSRunLoop currentRunLoop];
    [runner addTimer:t forMode: NSDefaultRunLoopMode];

}
-(void)addOneDay:(NSTimer*)timer
{

    NSDate *getDate = [dateFormat dateFromString:changedDate];
    int oneDayInterval = 24 * 60 * 60; //in seconds
    NSDate *newDate = [getDate dateByAddingTimeInterval:oneDayInterval];
    changedDate = [dateFormat stringFromDate:newDate];
    NSLog(@"new Date: %@",changedDate);
}



@end