【发布时间】:2017-03-30 17:03:37
【问题描述】:
我尝试比较两天忽略时间。所以我用
calendar.compare(date1, to: date2, toGranularity: .day)
但是在将字符串日期转换为 Date 类型时,它会转换为 UTC。所以它会从 1.1.2016 0:05 到 31.12.2015 11:05 pm。当按天比较时,这仅包括剩余的小时。转换前是 24 小时。有什么想法可以毫不费力地处理这个问题吗?
另外: 代码:
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy hh:mm"
var date1 : Date = dateFormatter.date(from: "01-01-2016 00:05")!
var date2 = dateFormatter.date(from: "01-01-2016 03:30")
if let dateFromString = dateFormatter.date(from: "01-01-2016 00:05") {
print(dateFromString)
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let stringFromDate = dateFormatter.string(from: dateFromString)
}
Calendar.current.compare(date1, to: date2!, toGranularity: .day) == .orderedSame
【问题讨论】:
-
以上代码根据日历比较给定日期是同一天还是不同天。请展示一个包含预期输出和实际输出的独立可重复示例。
-
我添加了代码并变得更加困惑。我必须先做一些测试! :-)
-
您对实际问题不是很清楚。是它转换为导致问题的 UTC 格式的问题,还是转换时您丢失了小时信息,或者转换后它不再是 24 小时格式?尝试重写并清楚您遇到的问题,这将使您能够更快地得到答案。