我目前正在开发 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 的方式有问题吗?任何有关如何确保始终正确捕获年份的建议将不胜感激。
谢谢!
您应该在正确的区域设置中使用日期格式化程序。我的项目有一个扩展,您可以尝试使用以下之一:
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
}()
}