日期转换为字符串[格式字符串] Swift中转换为日期的字符串

时间:2020-04-09 18:52:04

标签: ios swift date date-formatting

我整天都在思考这个问题,似乎无法找到解决方案。我有一个可以查询“健康数据存储”的健身程序。在predicateForSamples(withStart:myStartDate,end:myEndDate)中,我发现从datePicker获取日期发送了一个时间点,因此我的查询没有全天返回我想要的结果。因此,我想出如果我采用该datePicker日期并将其转换为开始和结束格式,我的问题将得到解决。但是,使用let date = dateFormatter.date(from:dateString)返回正确的日期,但是两个函数的时间都返回为04:00:00 +0000。

如果有人有建议,请随时伸出援助之手。非常感谢!

User.create({ user: { ...req.body, entries: 0 } })

2 个答案:

答案 0 :(得分:1)

这应该可以解决您的问题

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!
}

答案 1 :(得分:1)

除上述内容外,实际上还可以通过设置dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)来解决,因为距GMT的秒数是您的问题。