日期到字符串 [格式字符串] 字符串到 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) 解决的,因为格林威治标准时间的秒数是您的问题。