我正在尝试以人类可读的格式获取时间间隔,例如20分钟前
我从服务器获取以下日期(来自服务器的日期是过去的日期)
"2019-02-06T16:42:41.908Z"
我正在使用以下日期格式化程序
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let date = dateFormatter.date(from: dateString)
现在,当我尝试使用以下内容获取日期组件
let interval = Calendar.current.dateComponents([.year, .month, .day,.hour, .minute], from: serverDate, to: Date())
我得到的分钟数为负数
(lldb) p interval.minute
(Int?) $R2 = -9
请让我知道我在做什么错。任何想法或建议都很好。
答案 0 :(得分:1)
您正在使用方法dateComponents(_:from:to:),该方法返回两个日期之间的差值。根据两个日期的顺序,差异可能为负。
例如:
let interval = Calendar.current.dateComponents([...], from: date1, to: date2)
在date1 > date2
时将返回负间隔。
当date2
为Date()
(即当前日期)时,负值表示日期在将来。