Swift - 将字符串转换为在正确日期前一天返回的日期[重复]

Posted

技术标签:

【中文标题】Swift - 将字符串转换为在正确日期前一天返回的日期[重复]【英文标题】:Swift - converting string to date returning one day prior to correct date [duplicate] 【发布时间】:2020-05-28 15:02:32 【问题描述】:

我正在尝试将日期字符串转换为 Swift 中的日期。我的日期字符串返回为:

“2020 年 5 月 28 日”

我有这个方法:

    private func getDate(date: String) -> Date? 
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd/MM/yyyy"
    return dateFormatter.date(from: date)

但它正在返回:

Optional(2020-05-27 23:00:00 +0000)

为什么返回 27 号而不是 28 号?

【问题讨论】:

请注意输出是正确的:2020-05-27 23:00:00 +0000 (UTC) 是您所在时区的 28/05/2020 午夜。 【参考方案1】:

试试这个,它会起作用的

func convertStringintoDate(dateStr:String, dateFormat format:String) -> Date
    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale.init(identifier:"en_US_POSIX")
    dateFormatter.timeZone = TimeZone.init(abbreviation: "GMT")
    dateFormatter.dateFormat = format
    if let startDate = dateFormatter.date(from: dateStr)
        return startDate as Date
    
    return Date() as Date

像这样调用这个函数:-

 print(convertStringintoDate(dateStr: "28/05/2020", dateFormat: "dd/MM/yyyy"))

【讨论】:

以上是关于Swift - 将字符串转换为在正确日期前一天返回的日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Swift 中将日期转换为特定格式

使用 SimpleDateFormat 将字符串转换为日期返回不正确的格式 [重复]

iOS日期转换器返回正确的日期[重复]

oracle 字符型中文日期怎么转换成日期型

Javascript:正确地将日期字符串转换为日期对象

将 JavaScript Date 对象转换为 JSON 字符串时日期更改为前一天