2009-04-23 26 views
20

Tôi có một số NSDate đại diện cho một thời điểm cụ thể. Định dạng của ngày đó là hhmmss. Tôi muốn thêm giá trị NSInterval (được chỉ định bằng giây) vào giá trị thời gian đó.thêm NSTimeInterval vào NSDate trong ca cao

Ví dụ:

NSDate =   123000 
NSTimeInterval = 3600 

Added together = 133000 

cách tốt nhất để làm điều này là gì?

Trả lời

52

Bạn đã xem hướng dẫn sử dụng Dates and Times Programming Topics for Cocoa chưa?

Về cơ bản, bạn cần chuyển đổi thời gian của mình thành một NSDate. Để chuyển đổi chuỗi thành ngày bạn sử dụng lớp NSDateFormatter hoặc có thể NSDateComponents nếu bạn đã biết giờ, phút và giây.

NSTimeInterval của bạn chỉ là gấp đôi (tức là 3600.0).

Sau đó, bạn sử dụng phương pháp dateByAddingTimeInterval của NSDate để thêm số giây vào thời gian.

NSDate* newDate = [oldDate dateByAddingTimeInterval:3600.0]; 

Sau đó bạn có thể sử dụng một trong hai NSDateFormatter hoặc NSDateComponents để có được thời gian mới trở ra một lần nữa.

+0

Cảm ơn, chính xác những gì tôi cần! –

+0

addTimeInterval: Không được chấp nhận trong iOS 4.0. Sử dụng dateByAddingTimeInterval: - http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html –

+0

@SeungUnHam Thật vậy. Câu trả lời được viết khi hệ điều hành iPhone 2.x là hiện tại (!), Nhưng tôi đã cập nhật nó để phản ánh đề xuất hiện tại. –

1
// 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. 
}