在 Swift 中将字符串转换为日期 [重复]

Posted

技术标签:

【中文标题】在 Swift 中将字符串转换为日期 [重复]【英文标题】:Converting a String to a Date in Swift [duplicate] 【发布时间】:2017-07-30 10:55:16 【问题描述】:

我在字符串中有日期,下面的代码格式要更改为Date 但我收到nil

let addedDate = "Tue, 25 May 2010 12:53:58 +0000"
let formatter = DateFormatter()
formatter.dateFormat = "dd MM YYYY"
let date1 = formatter.date(from: addedDate)
print("DATE \(date1)")

【问题讨论】:

您是否注意到dateFormataddedDate 的格式完全不匹配? 如果我知道那件事为什么我会在这里问.. 【参考方案1】:

日期格式需要是您尝试转换的字符串,而不是您想要返回的格式

所以

formatter.dateFormat = "dd MM YYYY"

应该是

formatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"

【讨论】:

如果您想以该格式显示日期,您需要设置另一个格式化程序 - 查看***.com/a/42231620/285190 您还必须将语言环境设置为英语。【参考方案2】:

您必须将您的字符串 (addedDateString) 转换为日期吗? (addDate) 然后您可以使用您想要的格式将其转换为字符串 (dateString)。请注意:从 String 到 Date 的转换失败时 addedDate 为 nil。

import UIKit

let addedDateString = "Tue, 25 May 2010 12:53:58 +0000"

// Transform addedDateString to Date
let addedDateFormatter = DateFormatter()
addedDateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"

if let addedDate = addedDateFormatter.date(from: addedDateString) 

    // Converstion String to Date return a valid Date
    print ("addedDate", addedDate)
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd MM YYYY"
    let dateString = dateFormatter.string(from: addedDate)
    print("Date: ", dateString)

 else 

    // addedDate == nil value when conversion String to Date failed
    print ("addedDateString not valid")


你也可以做一个函数。像这样的:

func transformStringDate(_ dateString: String,
                         fromDateFormat: String,
                         toDateFormat: String) -> String? 

    let initalFormatter = DateFormatter()
    initalFormatter.dateFormat = fromDateFormat

    guard let initialDate = initalFormatter.date(from: dateString) else 
        print ("Error in dateString or in fromDateFormat")
        return nil
    

    let resultFormatter = DateFormatter()
    resultFormatter.dateFormat = toDateFormat

    return resultFormatter.string(from: initialDate)


print (transformStringDate("Tue, 25 May 2010 12:53:58 +0000",
                           fromDateFormat: "E, d MMM yyyy HH:mm:ss Z",
                           toDateFormat: "dd MM YYYY") ?? "Error")

【讨论】:

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

如何在swift(ios)中将字符串格式的日期转换为另一种字符串格式[重复]

如何在python中将字符串转换为日期时间[重复]

如何在c#中将字符串转换为日期[重复]

如何在 C# 中将字符串转换为日期时间 [重复]

如何在Android中将时间戳字符串转换为日期[重复]

如何使用 Swift 在 xCode 中将 textField 的字符串转换为 Double [重复]