为什么NSDate字符串中有一些奇怪的字符



我使用下面的代码来获取日期时间。我会把它们发布到服务器

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let strDate = dateFormatter.stringFromDate(NSDate())

在服务器上,我发现有几个日志有奇怪的数据。它被编码为"date": "u0662u0660u0661u0666-u0660u0664-u0661u0660 u0661u0668:u0665u0669:u0664u0663"

我发现它们在UTF16中显示为٢٠١٦-٠٤-١٠ ١٨:٥٩:٤٣,问题是什么,似乎日期格式是正确的,但为什么year-month-day hour:minitue:seconds会无效。谢谢~

只需在格式化程序上设置区域设置:

let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")

en_US_POSIX是一个永远不会改变的标准化语言环境(即使美国改变了它对事物的编码方式)。

正如A-Live所指出的,这些都是有效数字和有效日期。它们不是西方阿拉伯数字(0123456789)。它们是东阿拉伯数字(٠。stringFromDate()使用格式化程序中的区域设置。如果不设置,它将使用系统区域设置。如果你想要一个特定的,设置它。

有关详细信息,请参阅QA1480。

这些都是完全有效的年、月、日等:根据您的代码,我们可以看到您已经决定接受任何语言环境的值,包括非阿拉伯数字。