【发布时间】:2020-04-10 04:11:16
【问题描述】:
我整天都在为这个问题绞尽脑汁,似乎无法找到解决方案。我有一个查询健康数据存储的健身程序。在 predicateForSamples(withStart: myStartDate, end: myEndDate) 我发现从 datePicker 获取日期会及时发送一个时刻,因此我的查询不会像我想要的那样返回一整天的结果。所以,我想如果我采用 datePicker 日期并将其转换为开始和结束格式,我的问题就会得到解决。但是,使用 let date = dateFormatter.date(from: dateString) 返回正确的日期,但两个函数的时间都返回为 04:00:00 +0000。
如果有人有任何建议,请随时伸出援助之手。非常感谢!
func convertStartDate(StartDate: Date) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyy-MM-dd '00':'00':'01' +0000"
let dateString = dateFormatter.string(from: StartDate)
print("convertingStartDate() - \(dateString)")
let date = dateFormatter.date(from: dateString)
print(date as Any)
return date!
}
func convertEndDate(EndDate: Date) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyy-MM-dd '23':'59':'59' +0000"
let dateString = dateFormatter.string(from: EndDate)
print("convertingEndDate() - \(dateString)")
let date = dateFormatter.date(from: dateString)
return date!
}
【问题讨论】:
-
这里是输出:2020-04-09 04:00:00 +0000
-
为什么你的日期格式中有数字??
-
我想要一个特定的时间来捕获 Health Kit 中的所有数据。所以,我把它改成了午夜之后和之前。
-
如果您的时区是 -04:00,则日期正确。
print始终以 UTC (+0000) 显示日期。时间格式'00':'00':'01'是语法糖。 -
你应该保持你的日期不变,如果你想知道一个日期是否和另一个日期在同一天,你可以使用日历方法 isDate inSameDayAs developer.apple.com/documentation/foundation/calendar/… 和 stackoverflow.com/a/43664156/2303865
标签: ios swift date date-formatting