AppChat/DateHelper.swift
/*  | 
Copyright (C) 2016 Apple Inc. All Rights Reserved.  | 
See LICENSE.txt for this sample’s licensing information  | 
Abstract:  | 
Helper functions and methods for working with dates.  | 
*/  | 
import Foundation  | 
func getDate(daysAgo days: Double = 0, hoursAgo hours: Double = 0, minutesAgo minutes: Double = 0, secondsAgo seconds: Double = 0) -> Date { | 
let hoursPerDay: Double = 24  | 
let hoursMeasurement = Measurement(value: (days * hoursPerDay) + hours, unit: UnitDuration.hours)  | 
let minutesMeasurement = Measurement(value: minutes, unit: UnitDuration.minutes)  | 
let secondsMeasurement = Measurement(value: seconds, unit: UnitDuration.seconds)  | 
let totalMeasurement = hoursMeasurement + minutesMeasurement + secondsMeasurement  | 
let totalTimeInterval = totalMeasurement.converted(to: UnitDuration.seconds).value  | 
return Date() - totalTimeInterval  | 
}  | 
extension Date { | 
    func timeAgoString() -> String? { | 
let components = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: self, to: Date())  | 
let formatter = DateComponentsFormatter()  | 
formatter.unitsStyle = .full  | 
        if components.year != nil, components.year != 0 { | 
formatter.allowedUnits = .year  | 
}  | 
        else if components.month != nil, components.month != 0 { | 
formatter.allowedUnits = .month  | 
}  | 
        else if components.day != nil, components.day != 0 { | 
formatter.allowedUnits = .day  | 
}  | 
        else if components.hour != nil, components.hour != 0 { | 
formatter.allowedUnits = .hour  | 
}  | 
        else if components.minute != nil, components.minute != 0 { | 
formatter.allowedUnits = .minute  | 
}  | 
        else { | 
formatter.allowedUnits = .second  | 
}  | 
        guard let timeString = formatter.string(from: components) else { | 
return nil  | 
}  | 
        return String(format: NSLocalizedString("%@ ago", comment: "Format string for relative time ago"), timeString) | 
}  | 
}  | 
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-10-27