【发布时间】:2018-08-01 02:38:05
【问题描述】:
我有一个 createdAt 时间戳。 createdAt 时间戳将与当前日期 (Date()) 进行比较。
假设 currentDate 是 2018 年 8 月 1 日。如果 createdAt 是 2018 年 7 月 28 日,则只显示 2018 年 7 月 28 日。但如果 createdAt 日期是同一天(2018 年 8 月 1 日),则只显示 2 m 前,5h 38m 15 年代以前,类似的,像这样的:
我尝试使用下面的代码,但结果不一致。如果日期不同,但下面的代码仍然显示 5h 16m。
func calculateTimeDifference() -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
guard let date1 = dateFormatter.date(from: dateTimeString) else {
return nil
}
let date2 = Date()
let components : Set<Calendar.Component> = [.second, .minute, .hour, .day, .month, .year]
let difference = Calendar.current.dateComponents(components, from: date1, to: date2)
var dateTimeDifferenceString = ""
var secondDifference = ""
var minuteDifference = ""
var hourDifference = ""
var dayDifference = ""
if difference.second! < 0 {
secondDifference = "0"
} else {
secondDifference = String(difference.second!)
}
if difference.minute! < 0 {
minuteDifference = "0"
} else {
minuteDifference = String(difference.minute!)
}
if difference.hour! < 0 {
hourDifference = "0"
} else {
hourDifference = String(difference.hour!)
}
if difference.day! < 0 {
dayDifference = "0"
} else{
dayDifference = String(difference.day!)
}
if difference.minute! == 0 {
dateTimeDifferenceString = "\(secondDifference)s"
} else if difference.hour == 0 {
dateTimeDifferenceString = "\(minuteDifference)m"
} else if difference.day == 0 {
dateTimeDifferenceString = "\(hourDifference)h \(minuteDifference)m"
} else if difference.day! > 0 {
dateTimeDifferenceString = "different day \(dayDifference)"
}
return dateTimeDifferenceString
}
你能分享你的代码吗?
【问题讨论】: