// // SwiftDate // Parse, validate, manipulate, and display dates, time and timezones in Swift // // Created by Daniele Margutti // - Web: https://www.danielemargutti.com // - Twitter: https://twitter.com/danielemargutti // - Mail: hello@danielemargutti.com // // Copyright © 2019 Daniele Margutti. Licensed under MIT License. // import Foundation // MARK: Int Extension /// This allows us to transform a literal number in a `DateComponents` and use it in math operations /// For example `5.days` will create a new `DateComponents` where `.day = 5`. public extension Int { /// Internal transformation function /// /// - parameter type: component to use /// /// - returns: return self value in form of `DateComponents` where given `Calendar.Component` has `self` as value internal func toDateComponents(type: Calendar.Component) -> DateComponents { var dateComponents = DateComponents() dateComponents.setValue(self, for: type) return dateComponents } /// Create a `DateComponents` with `self` value set as nanoseconds var nanoseconds: DateComponents { return toDateComponents(type: .nanosecond) } /// Create a `DateComponents` with `self` value set as seconds var seconds: DateComponents { return toDateComponents(type: .second) } /// Create a `DateComponents` with `self` value set as minutes var minutes: DateComponents { return toDateComponents(type: .minute) } /// Create a `DateComponents` with `self` value set as hours var hours: DateComponents { return toDateComponents(type: .hour) } /// Create a `DateComponents` with `self` value set as days var days: DateComponents { return toDateComponents(type: .day) } /// Create a `DateComponents` with `self` value set as weeks var weeks: DateComponents { return toDateComponents(type: .weekOfYear) } /// Create a `DateComponents` with `self` value set as months var months: DateComponents { return toDateComponents(type: .month) } /// Create a `DateComponents` with `self` value set as years var years: DateComponents { return toDateComponents(type: .year) } /// Create a `DateComponents` with `self` value set as quarters var quarters: DateComponents { return toDateComponents(type: .quarter) } }