如何更改Swift5(ISO8601)中的日期格式?
我搜索了几个小时,但只找到了这样的样本:如何更改Swift5(ISO8601)中的日期格式?,swift,dateformatter,Swift,Dateformatter,我搜索了几个小时,但只找到了这样的样本: let dateString = "2020-03-02T19:37:00.073+01:00" //get from api let dateFormatter = ISO8601DateFormatter() dateFormatter.formatOptions = [ .withTimeZone, .withInternetDateTime, .withFractionalSeconds ] print(dateFo
let dateString = "2020-03-02T19:37:00.073+01:00" //get from api
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [
.withTimeZone,
.withInternetDateTime,
.withFractionalSeconds
]
print(dateFormatter.date(from: dateString) ?? "no valid date")
//2020-03-02 18:37:00 +0000
我如何将此日期格式化为以下格式:
let dateString = "2020-03-02T19:37:00.073+01:00" //get from api
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [
.withTimeZone,
.withInternetDateTime,
.withFractionalSeconds
]
print(dateFormatter.date(from: dateString) ?? "no valid date")
//2020-03-02 18:37:00 +0000
2020年3月2日或2020年3月2日18:37(德语格式)
方法ISO8601DateFormatter()没有dateStyle属性
如何在标签中显示格式化的日期
谢谢我有此参考资料,用于Salesforce的POC,他们使用以下格式: 我有一个可供使用的扩展:
extension Date {
func salesforceFormat() -> String {
let dateformat = DateFormatter.salesforceDateFormatter
return dateformat.string(from: self)
}
}
extension String {
func fromSalesforceDateToDate() -> Date? {
let dateformat = DateFormatter.salesforceDateFormatter
return dateformat.date(from: self)
}
}
extension DateFormatter {
static var salesforceDateFormatter: DateFormatter {
let dateformat = DateFormatter()
dateformat.calendar = Calendar(identifier: .iso8601)
dateformat.locale = Locale(identifier: "en_US_POSIX")
dateformat.timeZone = TimeZone(secondsFromGMT: 0)
dateformat.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX"
return dateformat
}
}
然后可以将字符串转换为日期,并将日期转换为字符串。扩展不是最好的解决方案,但可以工作,例如。谢谢您的帮助
以下是我的解决方案:
func convertDateFormater(_ date: String) -> String
{
let dateFormatter = ISO8601DateFormatter()
dateFormatter.timeZone = TimeZone.current
dateFormatter.formatOptions = [.withFractionalSeconds, .withTimeZone, .withInternetDateTime]
let date = dateFormatter.date(from: date)
let dateFormatter2 = DateFormatter()
dateFormatter2.dateFormat = "dd.MM.yyyy"
return dateFormatter2.string(from: date!)
}
您需要的格式不是ISO8601格式。使用普通的
DateFormatter
获取它们。您正在将日期打印到控制台。您必须将该日期
转换为字符串
。这是否回答了您的问题?我想将中的给定日期(字符串:2020-03-02T19:37:00.073+01:00)更改为德语格式。在上面的示例中,仅格式化当前日期。我该怎么做,谢谢。对不起,我读错了,我应该帮你