【Swift】Date で「〇〇日前」的なやつを表示する
今回は Swift の Date
で、現在から特定の Date
までがどの程度離れているかを示す Text
の表示方法を簡単に紹介したいと思います👀
結論
今回は下記のように Date
に Extension
メソッドを追加し、1週間以上前の Date
に関しては日付を取得できるようにしてみました。Calendar
のインスタンスメソッド dateComponents(_:from:to:)
を使用することで二つの Date
間の差異がわかります。
extension Date { static let dateFormatter: DateFormatter = { return DateFormatter() }() func dateText() -> String { Date.dateFormatter.dateFormat = "yyyy/MM/dd(E)" return Date.dateFormatter.string(from: self) } func agoText() -> String { let now = Date() let (earliest, latest) = self < now ? (self, now) : (now, self) let components = Calendar.current.dateComponents([.year, .month, .weekOfYear, .day, .hour, .minute, .second], from: earliest, to: latest) if let year = components.year, year > 0 { return self.dateText() } if let month = components.month, month > 0 { return self.dateText() } if let weekOfYear = components.weekOfYear, weekOfYear > 0 { return self.dateText() } if let day = components.day, day > 0 { return "\(day)日前" } if let hour = components.hour, hour > 0 { return "\(hour)時間前" } if let minute = components.minute, minute > 0 { return "\(minute)分前" } if let second = components.second, second > 0 { return "\(second)秒前" } return "たった今" } }
また、dateFormatter
の取り扱いについては以前の記事でも紹介したので気になる方は見てみてください。
という感じで本日も以上になります🍺