mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
83 lines
2.4 KiB
Swift
83 lines
2.4 KiB
Swift
//
|
|
// Date+Extension.swift
|
|
// Bark
|
|
//
|
|
// Created by huangfeng on 2020/5/26.
|
|
// Copyright © 2020 Fin. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
extension Date {
|
|
func formatString(format: String) -> String {
|
|
let formatter = DateFormatter()
|
|
formatter.dateFormat = format
|
|
return formatter.string(for: self) ?? ""
|
|
}
|
|
|
|
func agoFormatString() -> String {
|
|
let clendar = NSCalendar(calendarIdentifier: .gregorian)
|
|
let cps = clendar?.components([.hour, .minute, .second, .day, .month, .year], from: self, to: Date(), options: .wrapComponents)
|
|
|
|
let year = cps!.year!
|
|
let month = cps!.month!
|
|
let day = cps!.day!
|
|
let hour = cps!.hour!
|
|
let minute = cps!.minute!
|
|
|
|
if year > 0 || month > 0 || day > 0 || hour > 12 {
|
|
return formatString(format: "yyyy-MM-dd HH:mm")
|
|
}
|
|
if hour > 1 {
|
|
return formatString(format: "HH:mm")
|
|
}
|
|
if hour > 0 {
|
|
if minute > 0 {
|
|
return String(format: NSLocalizedString("timeMinHourAgo"), hour, minute)
|
|
}
|
|
return String(format: NSLocalizedString("timeHourAgo"), hour)
|
|
}
|
|
if minute > 1 {
|
|
return String(format: NSLocalizedString("timeMinAgo"), minute)
|
|
}
|
|
return NSLocalizedString("timeJustNow")
|
|
}
|
|
}
|
|
|
|
extension Date {
|
|
var month: Int {
|
|
return Calendar.current.component(.month, from: self)
|
|
}
|
|
|
|
var timeInterval: Int {
|
|
return Int(timeIntervalSince1970)
|
|
}
|
|
|
|
var isLastDayOfMonth: Bool {
|
|
return dayAfter.month != month
|
|
}
|
|
}
|
|
|
|
extension Date {
|
|
static var yesterday: Date { return Date().dayBefore }
|
|
static var tomorrow: Date { return Date().dayAfter }
|
|
static var lastHour: Date { return Calendar.current.date(byAdding: .hour, value: -1, to: Date())! }
|
|
static var lastMonth: Date { return Calendar.current.date(byAdding: .month, value: -1, to: Date())! }
|
|
|
|
var dayBefore: Date {
|
|
return Calendar.current.date(byAdding: .day, value: -1, to: startOfDay)!
|
|
}
|
|
|
|
var dayAfter: Date {
|
|
return Calendar.current.date(byAdding: .day, value: 1, to: startOfDay)!
|
|
}
|
|
|
|
var startOfDay: Date {
|
|
return Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: self)!
|
|
}
|
|
|
|
var endOfDay: Date {
|
|
return Calendar.current.date(bySettingHour: 23, minute: 59, second: 59, of: self)!
|
|
}
|
|
}
|