2016-07-07 29 views
44

Jak określić godzinę, minutę i sekundę z klasy NSDate w Swift 3?Jak uzyskać czas (godzinę, minutę, sekundę) w Swift 3 przy użyciu NSDate?

Swift 2:

let date = NSDate() 
let calendar = NSCalendar.currentCalendar() 
let components = calendar.components(.Hour, fromDate: date) 
let hour = components.hour 

Swift 3?

+0

Zobacz również [ta odpowiedź] (http: // stackoverflow .com/a/33343958/3681880). – Suragch

+1

Możliwy duplikat [Jak uzyskać aktualny czas jako datetime] (http://stackoverflow.com/questions/24070450/how-to-get-the-current-time-as-datetime) – Moritz

Odpowiedz

121

W Swift 3.0 Apple usunął przedrostek "NS" i uczynił wszystko prostym. Poniżej znajduje się sposób, aby dostać godziny, minuty i sekundy od „data” klasy (NSDate alternatywna)

let date = Date() 
let calendar = Calendar.current 

let hour = calendar.component(.hour, from: date) 
let minutes = calendar.component(.minute, from: date) 
let seconds = calendar.component(.second, from: date) 
print("hours = \(hour):\(minutes):\(seconds)") 

jak te można uzyskać erę, rok, miesiąc, dzień itd przekazując odpowiada.

55

Swift 3,0

// *** Create date *** 
let date = NSDate() 

// *** create calendar object *** 
var calendar = NSCalendar.current 

// *** Get components using current Local & Timezone ***  
print(calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date as Date)) 

// *** define calendar components to use as well Timezone to UTC *** 
let unitFlags = Set<Calendar.Component>([.hour, .year, .minute]) 
calendar.timeZone = TimeZone(identifier: "UTC")! 

// *** Get All components from date *** 
let components = calendar.dateComponents(unitFlags, from: date as Date) 
print("All Components : \(components)") 

// *** Get Individual components from date *** 
let hour = calendar.component(.hour, from: date as Date) 
let minutes = calendar.component(.minute, from: date as Date) 
let seconds = calendar.component(.second, from: date as Date) 
print("\(hour):\(minutes):\(seconds)") 
+0

Co jeśli dostanę '' Komponent "nie jest typem członka" Kalendarza "na linii' let unitFlags ... '' – netigger

+1

To, o co prosisz, nie jest dla mnie jasne, Jak możesz dodać typ non-member w 'Calendar.Component'? Weź pod uwagę, że twoja data jest następująca "02/12/15, 16:46", gdzie sekundy nie są dostępne i próbujesz wyodrębnić sekundy używając Komponentów, aby w takim przypadku zwrócić ci '0'. –

+0

Znalazłem mój problem ... Ogłosiłem strukturę o nazwie "Kalendarz", która oczywiście kolidowała z 'Calendar.Component'. – netigger

8

w Swift 3 Można to zrobić,

let date = Date() 
let hour = Calendar.current.component(.hour, from: date) 
17
let date = Date()  
let units: Set<Calendar.Component> = [.hour, .day, .month, .year] 
let comps = Calendar.current.dateComponents(units, from: date) 
2
let hours = time/3600 
let minutes = (time/60) % 60 
let seconds = time % 60 
return String(format: "%0.2d:%0.2d:%0.2d", hours, minutes, seconds) 
0
swift 4 

==> Getting iOS device current time:- 

print(" ---> ",(Calendar.current.component(.hour, from: Date())),":", 
       (Calendar.current.component(.minute, from: Date())),":", 
       (Calendar.current.component(.second, from: Date()))) 

output: ---> 10 : 11: 34