2014-06-10 5 views

Antwort

22

Swift 3:

let date = Date()// Aug 25, 2017, 11:55 AM 
let calendar = Calendar.current 

let hour = calendar.component(.hour, from: date) //11 
let minute = calendar.component(.minute, from: date) //55 
let sec = calendar.component(.second, from: date) //33 
let weekDay = calendar.component(.weekday, from: date) //6 (Friday) 

Holen von der API jeder Komponente vorhanden unten

public enum Component { 
    case era 
    case year 
    case month 
    case day 
    case hour 
    case minute 
    case second 
    case weekday 
    case weekdayOrdinal 
    case quarter 
    case weekOfMonth 
    case weekOfYear 
    case yearForWeekOfYear 
    case nanosecond 
    case calendar 
    case timeZone 
} 

Swift 2:

let currentHour = NSCalendar.currentCalendar().component(.Hour, fromDate: NSDate()) 

Dies genug sein könnte:

let currentDate = NSDate() // You can input the custom as well 
let calendar = NSCalendar.currentCalendar() 
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: currentDate) 
let currentHour = components.hour // You can play around with the ""components"" 
+1

Thankyou, aber IMHO dieser Code zu komplex ist, weil ich die Stunde des Tages –

+10

nur bekommen Sorry, du nicht bekommen haben. was meinst du? ** Ich will nur die Stunde des Tages ** bekommen? und auch ** code ist zu komplex **? –

+0

@KumarKL Wie bekomme ich den ganzen Tag, also Freitag, Samstag usw.? –

6

Wenn Sie die aktuelle Stunde in einem String, dann ist dies so kurz und lesbar ich denken konnte.

let formatter = NSDateFormatter() 
formatter.dateFormat = "HH" 

let timeString = formatter.stringFromDate(NSDate()) 
+0

Ich verstehe Ihren Code, aber schließlich würde ich eine Ganzzahl anstelle einer Zeichenfolge benötigen, aber vielen Dank für Ihre Hilfe, ich glaube, dass dieser Code kann sehr nützlich sein –

+1

Besten Dank ist eine Abstimmung bis :) – Binarian

1

Schließlich war ich in der Lage, die einfachste Lösung nach kämpfen für eine Zeit

let dateComponents = NSCalendar.currentCalendar().components(NSCalendarUnit.HourCalendarUnit, fromDate: NSDate()) 
let nHourOfDay = dateComponents.hour 
+0

könnten Sie sogar "NSCalendarUnit" entfernen? Ich bin von meinem Mac entfernt und kann es nicht testen. –

+0

@JeanLeMoignan Ja, Sie können. Ich habe es getestet. – Ben

75

Swift 3,0

let hour = Calendar.current.component(.hour, from: Date()) 

 

Or zu finden, wenn Sie interessiert an 12 hour AM/PM Datumsformat, dann NSDateFormatter

let formatter = DateFormatter() 
formatter.dateFormat = "hh a" // "a" prints "pm" or "am" 
let hourString = formatter.string(from: Date()) // "12 AM" 

verwenden Wenn Sie Minuten, Sekunden und andere wollen, gehen Sie wie folgt

let date = Date() // save date, so all components use the same date 
let calendar = Calendar.current // or e.g. Calendar(identifier: .persian) 

let hour = calendar.component(.hour, from: date) 
let minute = calendar.component(.minute, from: date) 
let second = calendar.component(.second, from: date) 

und Check-out-Komponenten auf Apple docs:

.era, .year, .month, .day, .hour, .minute, .second, 
.weekday, .weekdayOrdinal, .quarter, weekOfMonth, .weekOfYear, 
.yearForWeekOfYear, .nanosecond, .calendar, .timezone 

Swift 2.0

let hour = NSCalendar.currentCalendar().component(.Hour, fromDate: NSDate()) 

Swift 1,0

let hour = NSCalendar.currentCalendar().component(.CalendarUnitHour, fromDate: NSDate()) 
+1

Mit Swift 2: 'let hour = NSCalendar.currentCalendar(). Component (.Hour, fromDate: NSDate())' –

+1

ist es schön zu sehen, wie sich Swift im Laufe der Zeit verbessert. Swift 3.0 Version ist viel lesbarer, dass Swift 1.0 one – Kasztan

+0

Sie wollen "h a" nicht "hh a" Wenn Sie wollen 7 Uhr nicht 07 Uhr – DoesData

1

für SWIFT 2.0: in einem Schritt wie folgt

let hour = NSCalendar.currentCalendar().component(NSCalendarUnit.Hour, fromDate: NSDate()) 
0

Sie können den ganzzahligen Wert der aktuellen Stunde erhalten:

let currentHour = NSCalendar.currentCalendar().components(.Hour, fromDate: NSDate()).hour 
0

Hier ist ein Referenzbeispiel dafür, wie ich es tun (DateUtils.swift) -

Beispiel Verwendung:

let today = DateUtils.getToday(); 
    let hr = DateUtils.getHours(today); 
    let min = DateUtils.getMinutes(today); 
    ... (etc.) ... 

DateUtils.swift:

//Field wrapper routines 
class func getToday() -> Date    { return Date(); } 
class func getHours(_ date : Date) -> Int { return Calendar.current.component(.hour, from: date); } 
class func getMinutes(_ date : Date) -> Int { return Calendar.current.component(.minute, from: date); } 
... (continued for all fields, see file) ... 
Verwandte Themen