json - SWIFT DateFormatter 结果不一致

标签 json swift macos dateformatter

我正在使用字符串扩展函数来转换日期字符串。其功能是:

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 都是相同的。

最佳答案

您的错误来自这一行:dateFormater.locale = Locale.current。您的两台计算机可能设置为使用不同的区域设置。

按住 option 键的同时单击“运行”,然后检查两台计算机上的“应用程序区域”设置。

关于json - SWIFT DateFormatter 结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44182121/

相关文章:

javascript - 读取 .json 文件并解析其数据?

linux - 如何让 shell 脚本同时在 Linux 和 OS X 上运行?

macos - SwiftUI 列表选中行文本颜色

swift - 通用类型的扩展 `UnsafeMutablePointer<UInt8>`

ios - 如何将日期信息传递给 CVCalendar 进行显示?

cocoa - Apple 的 UI 是否在菜单和/或菜单项的上下文菜单中定义了拖放功能

json - 用于展平对象数组的 JMESPath 表达式,每个对象都有嵌套的对象数组

java - Android Parse.com 返回损坏的 json

c# - Audit.net Audit.MVC 输出到 json 而不是 json 文件

swift - 以编程方式访问 UIViewController 子类中 UIView 子类的成员