Limits relative date strings to “Yesterday” and “Today”

Any relative date older than “Yesterday” will be displayed as absolute date instead.
This commit is contained in:
Riley Testut
2023-10-16 18:27:48 -05:00
committed by Magesh K
parent d53e36633d
commit 727ab0b554
3 changed files with 11 additions and 18 deletions

View File

@@ -10,6 +10,13 @@ import Foundation
public extension Date
{
private static let mediumDateFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
return dateFormatter
}()
func numberOfCalendarDays(since date: Date) -> Int
{
let today = Calendar.current.startOfDay(for: self)
@@ -19,15 +26,15 @@ public extension Date
return components.day!
}
func relativeDateString(since date: Date, dateFormatter: DateFormatter) -> String
func relativeDateString(since date: Date, dateFormatter: DateFormatter? = nil) -> String
{
let dateFormatter = dateFormatter ?? Date.mediumDateFormatter
let numberOfDays = self.numberOfCalendarDays(since: date)
switch numberOfDays
{
case 0: return NSLocalizedString("Today", comment: "")
case 1: return NSLocalizedString("Yesterday", comment: "")
case 2...7: return String(format: NSLocalizedString("%@ days ago", comment: ""), NSNumber(value: numberOfDays))
default: return dateFormatter.string(from: date)
}
}