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

问题描述 投票:0回答:2

我整天都在思考这个问题,似乎无法找到解决方案。我有一个可以查询“健康数据存储”的健身程序。在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!
}
ios swift date date-formatting
2个回答
0
投票

这应该可以解决您的问题

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

0
投票

除上述以外,实际上是通过设置dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)来解决的,因为距格林尼治标准时间的秒数是您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.