web-dev-qa-db-ja.com

ココアのNSDateにNSTimeIntervalを追加します

特定の時間を表すNSDateがあります。その日付の形式はhhmmssです。その時間値にNSInterval値(秒単位で指定)を追加したいと思います。

例:

NSDate =         123000
NSTimeInterval = 3600

Added together = 133000

これを行うための最良の方法は何ですか?

21
l Beursgens

Cocoaの日付と時刻のプログラミングトピック マニュアルを見たことがありますか?

基本的に、時間をNSDateに変換する必要があります。文字列を日付に変換するには、NSDateFormatterクラスを使用するか、時間、分、秒がわかっている場合はNSDateComponentsを使用します。

NSTimeIntervalはちょうどdouble(つまり、3600.0)です。

次に、NSDateのdateByAddingTimeIntervalメソッドを使用して、時間に秒数を追加します。

NSDate* newDate = [oldDate dateByAddingTimeInterval:3600.0];

その後、NSDateFormatterまたはNSDateComponentsのいずれかを使用して、新しい時間を再び戻すことができます。

52

addTimeIntervalは非推奨になりました。代わりに dateByAddingTimeInterval を使用してみてください。

8
tbone
// This will set the time when your view appears it will also
// set the time if you want to retrieve from it.
-(void)viewDidAppear:(BOOL)animated
{
     //Create todays date
     NSDate *duedate = [NSDate date];
     //Add how ever many days you could write 86400*numbe_of_days days 86400/24 for an hour
     //Then simply reassign the variable or use a different one.
     duedate = [duedate dateByAddingTimeInterval:86400];  //I add one day
     [datePicker setDate:duedate animated:YES]; //Animate yes will show your pickers moving
     [datePicker setMinimumDate:duedate]; //Set minimum date.
}
1
Mixstah