日历组件为负数

时间:2019-03-22 12:14:08

标签: ios swift

我正在尝试以人类可读的格式获取时间间隔,例如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

请让我知道我在做什么错。任何想法或建议都很好。

1 个答案:

答案 0 :(得分:1)

您正在使用方法dateComponents(_:from:to:),该方法返回两个日期之间的差值。根据两个日期的顺序,差异可能为负。

例如:

let interval = Calendar.current.dateComponents([...], from: date1, to: date2)

date1 > date2时将返回负间隔。

date2Date()(即当前日期)时,负值表示日期在将来。