我目前从API获取日期格式为:
“2018-06-09T09:20:48”
我想将此日期与今天,明天进行比较,否则我还有另一个条件。
我所做的是:
func dateFormatter(date: String){
let today = Date() //2018-06-06 04:54:46 +0000
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: today) //2018-06-07 04:54:46 +0000
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date_db = dateFormatter.date(from: date) //2018-06-06 12:32:02 +0000
if today == date_db{
print("It is today")
}
else if tomorrow = date_db {
print("It is tomorrow")
}
else {
"After Some Days"
}
}
这不起作用,因为它将dateTime与dateTime进行比较,这就是原因,但我只想要今天,明天和date_db的日期,以便我可以比较它们。我怎么能这样做?
答案 0 :(得分:1)
几个问题。首先,你的日期格式是错误的。你有错误的时区。您的区域设置错误。修复这些后,您可以解析日期字符串。
然后,确定日期是今天还是明天(忽略时间)的正确方法是使用Calendar
方法isDateInToday
和isDateInTomorrow
。
在这里修改了所有内容的代码:
func dateFormatter(date: String){
let dateFormatter = DateFormatter()
// For a string like "2018-06-09T09:20:48"
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0) // assume date is GMT+0
if let date_db = dateFormatter.date(from: date) {
if Calendar.current.isDateInToday(date_db) {
print("It is today")
} else if Calendar.current.isDateInTomorrow(date_db) {
print("It is tomorrow")
} else {
print("After Some Days")
}
} else {
print("Unexpected date string")
}
}