How to get the hour of the day with Swift?

IosSwiftNsdate

Ios Problem Overview


How would I get the hour of the day in Swift. I have tried NSCalendar and NSDateComponents, but I'm afraid I'm just starting with Swift.

Ios Solutions


Solution 1 - Ios

Swift 5.0 / 4.0 / 3.0

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

 

Or, if you're interested in 12 hour AM/PM date format, then use NSDateFormatter

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

If you want minutes, seconds and others, do as following

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)

Check out available components on 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())

Solution 2 - Ios

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) 

Get any of component available from the API below

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

This could be enough :

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

Solution 3 - Ios

If you want the current hour in a String, this is as short and readable I could think of.

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

let timeString = formatter.stringFromDate(NSDate())

Solution 4 - Ios

Finally I was able to find the easiest solution after struggling for a time

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

Solution 5 - Ios

For Swift 2.0:

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

Solution 6 - Ios

Here is a reference example for how I do it (DateUtils.swift) -

Example Use:

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

Solution 7 - Ios

You can get the integer value of the current hour in one step like this:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSamuel GómezView Question on Stackoverflow
Solution 1 - Iosaverage JoeView Answer on Stackoverflow
Solution 2 - IosKumar KLView Answer on Stackoverflow
Solution 3 - IosBinarianView Answer on Stackoverflow
Solution 4 - IosSamuel GómezView Answer on Stackoverflow
Solution 5 - IosGmeister4View Answer on Stackoverflow
Solution 6 - IosJ-DizzleView Answer on Stackoverflow
Solution 7 - IosJ. CrossView Answer on Stackoverflow