web-dev-qa-db-fra.com

Comment obtenir l'heure du jour avec Swift?

Comment pourrais-je obtenir l'heure du jour à Swift. J'ai essayé NSCalendar et NSDateComponents, mais j'ai bien peur de commencer avec Swift.

48
Samuel Gómez

Swift 5.0/4.0/3.0

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

Ou, si vous êtes intéressé par 12 hour AM/PM format de date, puis utilisez NSDateFormatter

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

Si vous voulez des minutes, des secondes et autres, procédez comme suit

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)

Découvrez les composants disponibles sur 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())
118
average Joe

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) 

Obtenez l'un des composants disponibles à partir de l'API ci-dessous

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

Cela pourrait suffire:

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""
26
Kumar KL

Si vous voulez l'heure actuelle dans une chaîne, c'est aussi court et lisible que je pourrais penser.

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

let timeString = formatter.stringFromDate(NSDate())
7
Binarian

Voici un exemple de référence pour la façon dont je le fais ( DateUtils.Swift ) -

Exemple d'utilisation:

    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) ...
1
J-Dizzle

Enfin, j'ai pu trouver la solution la plus simple après avoir lutté pendant un certain temps

let dateComponents = NSCalendar.currentCalendar().components(NSCalendarUnit.HourCalendarUnit, fromDate: NSDate())
let nHourOfDay = dateComponents.hour
1
Samuel Gómez

Pour Swift 2.0:

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

Vous pouvez obtenir la valeur entière de l'heure actuelle en une seule étape comme ceci:

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