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

时间:2016-04-12 08:28:03

标签: ios swift nsdate nsdateformatter

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

javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbuX
534-5.7.14 fAu8nfa4SHWaBUpnzeQrQedgOXyBxgzjsvxAAW_wa2GmTocRiAyuXMlnw3bb5AS7k6ba_S
534-5.7.14 tr6DS1yYByctQzldQZuuh5ToXwgw0IxF4oMok_CVkyMIR3qd9-aNNyKNu5mOICXlEVohx2
534-5.7.14 dd3x_kN96vc2_uRI2HWub0DqwbYh2VsoiZgxs8plhJCO76Ct55efXd9a6DK7HQnCXmzQRX
534-5.7.14 gTaEEKIaWkQOVPrl1eIjiv2HG2cMQ> Please log in via your web browser and
534-5.7.14 then try again.
534-5.7.14  Learn more at
534 5.7.14  https://support.google.com/mail/answer/78754 85sm41450849pfq.6 - gsmtp
    at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:892)
    at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:814)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:728)
    at javax.mail.Service.connect(Service.java:386)
    at javax.mail.Service.connect(Service.java:245)
    at javax.mail.Service.connect(Service.java:194)
    at javax.mail.Transport.send0(Transport.java:253)
    at javax.mail.Transport.send(Transport.java:124)

在服务器中,我发现有几个日志有奇怪的数据。它被编码为let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let strDate = dateFormatter.stringFromDate(NSDate())

我发现它们在UTF16中显示为"date": "\u0662\u0660\u0661\u0666-\u0660\u0664-\u0661\u0660 \u0661\u0668:\u0665\u0669:\u0664\u0663",问题是什么,似乎日期格式正确,但为什么٢٠١٦-٠٤-١٠ ١٨:٥٩:٤٣无效。感谢〜

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

作为A-Live笔记,这些是有效数字和有效日期。它们不是西方阿拉伯数字(0123456789)。它们是东部阿拉伯数字(0123456789)。 stringFromDate()使用格式化程序中的区域设置。如果未设置,则使用系统区域设置。如果你想要一个特定的,请设置它。

有关详细信息,请参阅QA1480