我正在使用字符串扩展函数来转换日期字符串。功能是:
func convertDateString() -> String {
let dateFormater = DateFormatter()
var returnString = ""
dateFormater.dateFormat = "yyyy-MM-dd'T'hh:mm:ss'Z'" // Takes the format from the JSON journal entry for elite dangerous
dateFormater.locale = Locale.current
if let dateObj = dateFormater.date(from: self) {
dateFormater.dateFormat = "dd MMM yyyy hh:mm:ss" // Converts it to a new string (as a date object)
returnString = dateFormater.string(from: dateObj) // Converts the date object back to a string
} else {
returnString = "Error converting date"
}
return returnString
}
我正在使用一个数据集,它是一系列调用字符串扩展名的 JSON 对象来转换来自 JSON 参考文件的部分结果。
我在两台机器上工作——一台是 MACPRO,一台是 MacBookAir。两者都运行相同版本的 MacOS (10.12.5) 和相同版本的 Xcode。
当我在 MACPRO 上运行该应用程序时,它会毫无问题地解析 JSON 对象文件,并按照上面显示的函数中的预期正确转换每个日期。但是,当我在 MacBookAir 上运行应用程序时,在完全相同的数据文件上,JSON 对象文件似乎被解析没有问题,但是某些(百分之几)日期没有按预期转换 - 它们使if let dateObj = dateFormater.date(from: self)
语句失败并且是返回为“错误转换日期”。
我不知道发生了什么。我已经尝试删除dateFormater.locale = Locale.current
,它没有任何区别。
相同的 JSON 对象会产生错误(即,每次我运行文件时,都是相同的 JSON 对象产生“转换日期错误”响应)。当我在文本编辑器中查看 JSON 对象文件时,JSON 对象似乎没有问题(我还在在线 JSON 对象格式化程序中确认了这一点,它正确读取了 JSON 对象。)
我还应该补充一点,我正在使用 SwiftyJSON 来解析 JSON 对象。
感谢您收到任何帮助或建议。
有没有办法让我的代码更健壮?鉴于应用程序、数据文件、Xcode 和 MacOS 都相同,任何人都可以提出为什么不同的机器可能会有所不同。