Bloqueo de conversión de formato de hora de 12 horas de iOS 15.4

Los comentarios en línea fallaron después de actualizar a la versión 15.4. Según las capturas de pantalla enviadas por los comentarios, todas están en formato de hora de 12 horas.

Después de actualizar la última versión de XCode, descubrí que el formato de tiempo predeterminado del simulador es de 12 horas, pero no se produjo ningún bloqueo;

Así que actualicé la máquina de prueba a la versión 15.4 y usé el reloj de 12 horas para la prueba. El código del problema se encuentra de la siguiente manera

       let dfmatter = DateFormatter()

        dfmatter.dateFormat = “yyyy/MM/dd HH:mm:ss”

        let date = dfmatter.date(from: "2020/02/02 17:22:38")

        let dateStamp:TimeInterval = date!.timeIntervalSince1970

复制代码

261647686109_.pic.jpg

Esta fecha de retroalimentación del código de conversión de formato de hora es nula, lo que provoca un bloqueo;

Aquí, primero descubrimos un problema de especificación de código, que podría haberse resuelto sin forzar la solución para que el sistema se bloquee. Debido a que este código también se usó durante 6 años, la migración de OC a Swift generalmente no causará un bloqueo, por lo que no pensé mucho en usar la solución fuerte directamente, pero no esperaba caer en el hoyo en versión 15.4.

Abajo para ver por qué es nulo,

Ejecuto la marca de tiempo actual en el formato de conversión "yyyy-MM-dd HH:mm:ss" en un dispositivo real y lo imprimo de la siguiente manera

iOS15.4

  • 12 horas 2020/02/02 5:22:38 p. m.

  • 24 horas 2020/02/02 17:22:38

Otras versiones del sistema

  • Reloj de 12 horas 2020/02/02 17:22:38

  • 24 horas 2020/02/02 17:22:38

Imprime los parámetros del objeto de formato de fecha

271647686109_.pic.jpg

Debería ser que DateFormat() se haya modificado en la versión del sistema de iOS15.4, por lo que se produce esta excepción.

Revisé la documentación del desarrollador y encontré una situación similar en una sesión técnica de preguntas y respuestas.

-   在 iOS 上,用户可以覆盖默认的 AM/PM 与 24 小时时间设置(通过设置 > 常规 > 日期和时间 > 24 小时时间),这会导致 NSDateFormatter 重写您设置的格式字符串,这可能会导致您的时间解析失败。
复制代码

Con documentación para desarrolladores: developer.apple.com/library/arc…

Después de intentar agregar local, se resolverá normalmente cuando se ejecute nuevamente.

Pero es muy extraño que el local en el formato de fecha impreso esté en el formato "zh_CN".

Finalmente, se adjunta el código que se puede analizar normalmente:

       let dfmatter = DateFormatter()

        dfmatter.dateFormat = “yyyy/MM/dd HH:mm:ss”
        
        dfmatter.locale = Locale(identifier: "zh_CN")

        let date = dfmatter.date(from: "2020/02/02 17:22:38")

        let dateStamp:TimeInterval = date!.timeIntervalSince1970

复制代码

Supongo que te gusta

Origin juejin.im/post/7077493937383948295
Recomendado
Clasificación