日期到字符串 [格式字符串] 字符串到 Swift 中的日期
Date to String [format string] String to Date in Swift
这个问题我绞尽脑汁想了一整天,似乎无法得到解决方案。我有一个查询健康数据存储的健身计划。在 predicateForSamples(withStart: myStartDate, end: myEndDate) 中,我发现从 datePicker 获取日期会及时发送一个时刻,因此我的查询不会 return 我想要的一整天的结果。所以,我想如果我采用那个 datePicker 日期并将其转换为开始和结束格式,我的问题就会得到解决。但是,使用 let date = dateFormatter.date(from: dateString) 是 returning 正确的日期,但时间 returns 为 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!
}
这应该可以解决您的问题
func convertStartDate(StartDate: Date) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyy-MM-dd '00':'00':'01' +0000"
let dateString = dateFormatter.string(from: StartDate)
dateFormatter.dateFormat = "yyy-MM-dd HH:mm:ss +0000"
let date = dateFormatter.date(from: dateString)
print(date as Any)
return date!
}
func convertEndDate(EndDate: Date) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyy-MM-dd '23':'59':'59' +0000"
let dateString = dateFormatter.string(from: EndDate)
dateFormatter.dateFormat = "yyy-MM-dd HH:mm:ss +0000"
let date = dateFormatter.date(from: dateString)
return date!
}
除上述之外,这实际上是通过设置 dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
解决的,因为格林威治标准时间的秒数是您的问题。
这个问题我绞尽脑汁想了一整天,似乎无法得到解决方案。我有一个查询健康数据存储的健身计划。在 predicateForSamples(withStart: myStartDate, end: myEndDate) 中,我发现从 datePicker 获取日期会及时发送一个时刻,因此我的查询不会 return 我想要的一整天的结果。所以,我想如果我采用那个 datePicker 日期并将其转换为开始和结束格式,我的问题就会得到解决。但是,使用 let date = dateFormatter.date(from: dateString) 是 returning 正确的日期,但时间 returns 为 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!
}
这应该可以解决您的问题
func convertStartDate(StartDate: Date) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyy-MM-dd '00':'00':'01' +0000"
let dateString = dateFormatter.string(from: StartDate)
dateFormatter.dateFormat = "yyy-MM-dd HH:mm:ss +0000"
let date = dateFormatter.date(from: dateString)
print(date as Any)
return date!
}
func convertEndDate(EndDate: Date) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyy-MM-dd '23':'59':'59' +0000"
let dateString = dateFormatter.string(from: EndDate)
dateFormatter.dateFormat = "yyy-MM-dd HH:mm:ss +0000"
let date = dateFormatter.date(from: dateString)
return date!
}
除上述之外,这实际上是通过设置 dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
解决的,因为格林威治标准时间的秒数是您的问题。