2013-01-09 9 views
10

Mam NSString, które mają format @ "2013-01-09 06:10:10 +0000" (otrzymuję go z serwera i nie jest to aktualny czas). Chcę ciągle zwiększać ją o sekundę. Mogę użyć timera do zrobienia tego, ale jak zwiększyć czas o jedną sekundę?Jak zwiększyć jedną sekundę o obiekt NSDate

Odpowiedz

30

Spróbuj tego,

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

Można uzyskać yourDate z łańcucha przy użyciu NSDateFormatter.

2

dodać 1 sekundę w terminie jak mieszka ..

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 do kopiowania kod [to pytanie] (http://stackoverflow.com/a/1654439/328360) bez jej mocowania do góry (nie ustalania nazwy zmiennych, a kod w rzeczywistości nie dodaje jednej sekundy, dodaje 60 sekund) – Marko

+0

@Marko po prostu publikuję mój kod, którego użyłem wcześniej w moich aplikacjach i nie wiem w tym czasie, otrzymuję rozwiązanie, z którego odpowiedź tak mogę napisać, że mój kod nie został skopiowany z żadnej innej odpowiedzi. Nie wiem o tym, ale jest to kod, który opublikowałem tylko z moim kodem i logiką. –

1

Say data łańcuch jest w var nazywa serverString. Można uzyskać datę w ten sposób ...

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

i przyrost to w ten sposób:

date = [date dateByAddingTimeInterval:1.0]; 
0

SWIFT 3.x Rozwiązanie

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

Obecnie (2017) Apple zaleca użycie (NS)Calendar dla wszystkich dat matematyki

Objective-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)! 
Powiązane problemy