I have been researching, but I couldnt find exact solution for my problem. I have been trying to get 1 hour ago from a date. How can I achieve this in swift?
import Foundation
extension Date {
typealias Component = (value: Int, type: Calendar.Component)
init?(bySubtracting components: Component..., calendar: Calendar = Calendar.current, from date: Date) {
guard let date = date.subtract(components, calendar: calendar) else { return nil }
self = date
}
func subtract(_ components: Component..., calendar: Calendar = Calendar.current) -> Date? {
subtract(components, calendar: calendar)
}
func subtract(_ components: [Component], calendar: Calendar = Calendar.current) -> Date? {
components.reduce(self) { (result, component) -> Date? in
guard let date = result else { return nil }
return calendar.date(byAdding: component.type, value: (-1)*component.value, to: date)
}
}
static func beforeNow(difference component: Component..., calendar: Calendar = Calendar.current) -> Date? {
Date().subtract(component, calendar: calendar)
}
static func beforeNow(difference component: [Component], calendar: Calendar = Calendar.current) -> Date? {
Date().subtract(component, calendar: calendar)
}
}
extension Date {
static func - (date: Date, component: Date.Component) -> Date? { date.subtract(component, calendar: Calendar.current) }
static func -= (date: inout Date, component: Date.Component) {
guard let newDate = date.subtract(component, calendar: Calendar.current) else { return }
date = newDate
}
}
var currentDate = Date()
let date1 = Date(bySubtracting: (30, .day), from: currentDate)
let date2 = Date().subtract((30, .day))
let date3 = Date().subtract([(1, .minute), (2, .hour), (3, .day), (4, .month)])
let component = Date.Component(value: 1, type: .day)
let date4 = Date.beforeNow(difference: component)
let date5 = Date.beforeNow(difference: (1, .minute), (2, .hour), (3, .day), (4, .month))
let date6 = Date.beforeNow(difference: [(1, .minute), (2, .hour), (3, .day), (4, .month)])
let date7 = currentDate - (1, .day)
currentDate -= Date.Component(value: 1, type: .day)