2016-07-07 14 views
44

Come è possibile determinare l'ora, i minuti e i secondi dalla classe NSDate in Swift 3?Come ottenere l'ora (ora, minuti, secondi) in Swift 3 usando NSDate?

In Swift 2:

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

Swift 3?

+0

Vedi anche [questa risposta] (http: // StackOverflow .com/a/33343958/3681,88 mille). – Suragch

+1

Possibile duplicato di [Come ottenere l'ora corrente come datetime] (http://stackoverflow.com/questions/24070450/how-to-get-the-current-time-as-datetime) – Moritz

risposta

121

In Swift 3.0 Apple ha rimosso il prefisso "NS" e ha reso tutto semplice. Qui di seguito è il modo per ottenere ora, minuti e secondi da 'Data' di classe (NSDate alternativo)

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)") 

Come questi è possibile ottenere epoca, anno, mese, data, ecc passando corrispondente.

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

Cosa succede se ottengo '' Component 'non è un tipo membro di' Calendar'' on line 'lascia unitFlags ...' ' – netigger

+1

Quello che mi stai chiedendo non mi è chiaro, come potresti aggiungere un tipo non membro in' Calendar.Component'? Considerate che la vostra data è successiva a "02/12/15, 16:46" dove i secondi non sono disponibili e provate ad estrarre i secondi usando i componenti, in questo caso restituirete "0". –

+0

Ho trovato il mio problema ... Avevo dichiarato una struttura chiamata "Calendar" che interferiva ovviamente con "Calendar.Component". – netigger

8

In Swift 3 si può fare questo,

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 
Problemi correlati