gpt4 book ai didi

ios - 如何从 Date 中获取 "yyyy-MM-dd' T'HH :mm:ss. SSSZZZZZ"格式的日期字符串?

转载 作者:行者123 更新时间:2023-11-29 05:33:16 25 4
gpt4 key购买 nike

我需要返回的日期字符串与我检索它的格式相同,但是在转换为日期并返回后,它丢失了一些字符

var dateStr = "2019-08-02T11:46:46.5117312Z"

let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"

let date = formatter.date(from: dateStr)

var str = formatter.string(from: date!) // ===>>> "2019-08-02T11:46:46.511Z"

最佳答案

您可以使用自定义格式化程序来完成此操作。但请注意,没有足够的 double 来存储日期。结果是 2019-08-02T11:46:46.5117311Z。代码:

class CustomDateFormatter {
private let dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
return formatter
}()

func date(fromString str: String) -> Date? {
let strs = str.components(separatedBy: CharacterSet(charactersIn: ".Z"))
if strs.count != 3 {
return nil
}

let dateStr = strs[0]
let secondsStr = strs[1]
guard let date = dateFormatter.date(from: dateStr),
let seconds = Double("0."+secondsStr) else {
return nil
}

let timeinteval = date.timeIntervalSince1970 + seconds
return Date(timeIntervalSince1970: timeinteval)
}

func string(fromDate date: Date) -> String {
let clippedDate = Date(timeIntervalSince1970: floor(date.timeIntervalSince1970))
let seconds = date.timeIntervalSince1970.truncatingRemainder(dividingBy: 1)
var lastPart = String(format: "%.7f", seconds)
lastPart = (lastPart as NSString).substring(from: 1)
return "\(dateFormatter.string(from: clippedDate))\(lastPart)Z"
}
}

let dateStr = "2019-08-02T11:46:46.5117312Z"
let formatter = CustomDateFormatter()
let date = formatter.date(fromString: dateStr)!

print(formatter.string(fromDate: date)) // =====>> 2019-08-02T11:46:46.5117311Z

关于ios - 如何从 Date 中获取 "yyyy-MM-dd' T'HH :mm:ss. SSSZZZZZ"格式的日期字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com