Pobierz aktualne NSDate w formacie znacznika czasu

83

Mam podstawową metodę, która pobiera bieżący czas i ustawia go w ciągu. Jednak w jaki sposób mogę to zrobić, aby sformatować bieżącą datę i godzinę w formacie znacznika czasu systemu UNIX od 1970 roku?

Oto mój kod:

Czy można użyć, NSDateFormatteraby zmienić „resultString” na znacznik czasu?

Supertecnoboff
źródło

Odpowiedzi:

217

Oto czego używam:

(razy 1000 dla milisekund, w przeciwnym razie wyjmij to)

Jeśli używasz go cały czas, dobrze byłoby zadeklarować makro

Następnie nazwij to tak:

Lub jako metoda:

Jako TimeInterval

UWAGA:

1000 służy do konwersji znacznika czasu na milisekundy. Możesz to usunąć, jeśli wolisz swój timeInterval w sekundach.

Szybki

Jeśli chcesz mieć zmienną globalną w Swift, możesz użyć tego:

Następnie możesz to nazwać

Ponownie, *1000jest to milisekundy, jeśli wolisz, możesz to usunąć. Jeśli chcesz zachować go jako plikNSTimeInterval

Zadeklaruj je poza kontekstem jakiejkolwiek klasy, a będą dostępne wszędzie.

Logan
źródło
2
Nie ma problemu, zaktualizowałem makro, którego używam na wypadek, gdyby było pomocne w Twojej sytuacji!
Logan
3
Dzięki @Logan, ale jestem prawie pewien, że makra są zawsze odradzane. Możesz łatwo stracić zrozumienie dużego programu z makrami. Najlepiej byłoby po prostu stworzyć metodę, która to robi i jest wywoływana zawsze, gdy tego potrzebujesz.
Supertecnoboff
BTW - jeśli dodajesz wartość do słownika, możesz po prostu zrobić:@{@"timestamp": @([[NSDate date] timeIntervalSince1970])
Cbas
15

posługiwać się [[NSDate date] timeIntervalSince1970]

mędrzec444
źródło
8
@([[NSDate date] timeIntervalSince1970]).stringValue
mattsven
7

UWAGA: - Znacznik czasu musi być w strefie UTC, więc konwertuję nasz czas lokalny na czas UTC.

Vicky
źródło
twoja GetCurrentTimeStamp () zawiera kilka problemów z małymi literami. wytnij i wklej do Xcode, aby zobaczyć
tdios
Użyj tego "NSString * strTimeStamp = [NSString stringWithFormat: @"% lld ", milliseconds]; NSLog (@" The Timestamp is =% @ ", strTimeStamp);"
Vicky
6

Jeśli chcesz wywołać tę metodę bezpośrednio w obiekcie NSDate i uzyskać znacznik czasu jako ciąg w milisekundach bez żadnych miejsc dziesiętnych, zdefiniuj tę metodę jako kategorię:

Śrut
źródło
1

// Poniższa metoda zwróci sygnaturę czasową po konwersji na milisekundy. [RETURNS STRING]

Fatima Arshad
źródło
1

Można również użyć

dla znacznika czasu w sekundach.

rubik
źródło
1

Wygodne jest zdefiniowanie makra w celu uzyskania aktualnego znacznika czasu

Następnie możesz użyć let timestamp = Constant.Time.now()

Alston
źródło
0

Szybki:

Mam UILabel, który pokazuje TimeStamp na podglądzie aparatu.

Konfiguruję przycisk ustawień, aby wyzwolić alertView.

}

AG
źródło
0

Dziennik będzie wyglądał następująco: nazwa pliku: / Users / Shared / Recording_06-28-2016 12:53: 26.mov

jiten
źródło
0

Jeśli potrzebujesz znacznika czasu jako ciągu.

nanjunda
źródło
0

Aby uzyskać znacznik czasu z NSDate Swift 3

Używać

Hardik Thakkar
źródło