2013-01-09 22 views
10

Tôi có một NSString có định dạng @ "2013-01-09 06:10:10 +0000" (Tôi nhận được nó từ máy chủ và nó không phải là thời gian hiện tại). Tôi muốn tăng thêm một giây liên tục. Tôi có thể sử dụng một bộ đếm thời gian để thực hiện nó, nhưng làm thế nào để tăng thời gian thêm một giây?Cách tăng một giây bằng đối tượng NSDate

Trả lời

30

Hãy thử điều này,

NSDate *correctDate = [NSDate dateWithTimeInterval:1.0 sinceDate:yourDate]; 

Bạn có thể nhận yourDate từ chuỗi sử dụng NSDateFormatter.

2

thêm 1 giây trong ngày của bạn như dưới đây ..

NSDate *mydate = [NSDate date]; 
NSTimeInterval secondsInEightHours = 60; // you can add hours and minuts with multiply the numbers with this second.. 
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours]; 
+0

downvote để sao chép mã từ [câu hỏi này] (http://stackoverflow.com/a/1654439/328360) nhưng không sửa chữa nó lên (không sửa chữa tên biến và mã không thực sự thêm một giây, nó thêm 60 giây) – Marko

+0

@Marko tôi chỉ đăng mã của tôi mà tôi đã sử dụng trước đó trong ứng dụng của mình và tôi không biết tại thời điểm đó tôi nhận giải pháp từ đó trả lời tôi gửi mã của tôi không được sao chép từ câu trả lời của người khác. tôi không biết về điều đó nhưng đây là mã mà tôi chỉ đăng với mã và logic của mình. –

1

Giả sử chuỗi ngày của bạn là trong var gọi serverString. Bạn có thể có được một ngày theo cách này ...

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"]; 
NSDate *date = [df dateFromString:serverString]; 

Và tăng nó theo cách này:

date = [date dateByAddingTimeInterval:1.0]; 
0

Giải pháp SWIFT 3.x

// Just an example to present second level date/time calculation 
let time = NSDate() 
let interval:Double = 5.0 
let timeFiveSecondLater = time.addingTimeInterval(interval) 
1

Ngày nay (2017) Apple khuyến cáo sử dụng (NS)Calendar cho tất cả các loại toán ngày

Mục tiêu-C

NSDate *now = [NSDate date]; 
NSCalendar *currentCalendar = [NSCalendar currentCalendar]; 
NSDate *nowPlusOneSecond = [currentCalendar dateByAddingUnit:NSCalendarUnitSecond 
                 value:1 
                 toDate:now 
                options:NSCalendarMatchNextTime]; 

Swift 3

let now = Date() 
let currentCalendar = Calendar.current 
let nowPlusOneSecond = currentCalendar.date(byAdding: .second, value: 1, to: now)! 
Các vấn đề liên quan