DateFormatter 在 iOS 上以格式化时间戳返回不正确的年份

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

我目前正在开发 iOS 应用程序,并且遇到了日期格式的特殊问题。我使用以下 Swift 代码生成特定格式的时间戳并将其记录到 Google Analytics4:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSXXX"
let currentDate = Date()
let formattedDate = dateFormatter.string(from: currentDate) // 2024-04-20T21:23:42.22+09:00

我使用的 dateFormat 应该以 ISO 8601 格式格式化当前日期和时间。然而,虽然预期的行为是获取当前年份(例如 2024),但格式化程序有时会返回 2567 或 0006 等年份。

这种不正确的年份数据偶尔出现在不同的用户设备中,并且与任何特定的 iOS 版本或设备型号无关。大多数时间戳都是正确的,但这些异常值令人担忧。

任何人都可以帮助我理解为什么会发生这种情况吗?我使用 DateFormatter 的方式有问题吗?任何有关如何确保始终正确捕获年份的建议将不胜感激。

谢谢!

ios swift timestamp google-analytics-4 dataformat
1个回答
0
投票

您应该在正确的区域设置中使用日期格式化程序。我的项目有一个扩展,您可以尝试使用以下之一:

extension DateFormatter {

 static let iso8601: ISO8601DateFormatter = {
    
    let formatter = ISO8601DateFormatter()
    return formatter
 }()

 static let iso8601Custom: DateFormatter = {
    
    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    formatter.calendar = Calendar(identifier: .gregorian)
    
    return formatter
 }()
}
© www.soinside.com 2019 - 2024. All rights reserved.