DateComponents

Taken in one context, date components can be used to represent a specific calendar date. But in another context, the same object might instead be used as a duration of time. For example, a date components object with year set to 2018, month set to 10, and day set to 10 could represent a period of 2018 years, 10 months, and 10 days or the tenth day of the tenth month in the year 2018.

nshipster.com/datecomponents/

The article introduces DateComponents, a versatile Foundation type in Swift for representing either a specific calendar date or a duration of time, emphasising its use over hardcoded time intervals like 60 * 60 * 24 for a day.

As a date specifier, DateComponents can create dates via calendar.date(from:), such as October 10, 2018, or extract components like year, month, and day from a Date using calendar.dateComponents(_:from:).

For durations, it calculates time differences with calendar.dateComponents(_:from:to:), like determining a month’s hours, or adds offsets like “tomorrow” using calendar.date(byAdding:to:). It covers nuanced components like era, quarter, weekdayOrdinal, and yearForWeekOfYear, noting quirks like the Gregorian calendar’s handling of BC/AD and locale-specific week starts.

The article highlights methods like dateInterval(of:for:) for precise range calculations and nextDate(after:matching:matchingPolicy:repeatedTimePolicy:direction:) for complex time-matching scenarios, leveraging Swift’s clear syntax to handle time’s complexity accurately.


Category:

Tag:

Year: