Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

65
Vistas
DateComponentsFormatter y .nanosegundo

Entonces, estoy usando un DateComponentsFormatter en una situación en la que necesito formatear solo los nanosegundos de un TimeInterval dado. El problema es que simplemente no funciona según lo previsto, o estoy confundiendo algo aquí que no conozco.

Aquí hay 3 pruebas rápidas para ilustrar lo que estoy diciendo.

1er escenario

 let fooFormatter = DateComponentsFormatter() fooFormatter.allowedUnits = [.second, .nanosecond] fooFormatter.unitsStyle = .full fooFormatter.collapsesLargestUnit = true fooFormatter.allowsFractionalUnits = true print(fooFormatter.string(from: 42.42424242424242424242424242424242))

Salida : Optional("42 seconds") .

Esperado : debido a que esto colapsa la "unidad más grande" (segundos en este caso), se espera que sea algo como (Optional("42.42424242424242424242424242424242 * 1e^9")) .

2do escenario

 let fooFormatter = DateComponentsFormatter() fooFormatter.allowedUnits = [.second, .nanosecond] fooFormatter.unitsStyle = .full fooFormatter.allowsFractionalUnits = true print(fooFormatter.string(from: 42.42))

Salida : Optional("42 seconds") .

Esperado : Incluso sin optar por no colapsar el .second , esperaba algo cercano a (Optional("42 seconds 0.42 * 1e^9 nanoseconds")) .

3er escenario

 let fooFormatter = DateComponentsFormatter() fooFormatter.allowedUnits = [.nanosecond] fooFormatter.unitsStyle = .full fooFormatter.allowsFractionalUnits = true print(fooFormatter.string(from: 42.424242))

Salida : nil .

Esperado : ahora ni siquiera reconocerá TimeInterval como válido, cuando se define como la fracción más pequeña posible, y obviamente esperaba todo en nanosegundos.

Es importante tener en cuenta que he usado allowsFractionalUnits = true , lo que es aún más alarmante , porque este comportamiento tampoco funciona en los resultados indicados anteriormente (consulte el comportamiento previsto aquí ).

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

DateComponentsFormatter no admite nanosegundos.

Consulte la documentación de allowedUnits , que no incluye nanosegundos. Dice:

Las unidades de calendario permitidas son:

  • year
  • month
  • weekOfMonth
  • day
  • hour
  • minute
  • second

La asignación de cualquier otra unidad de calendario a esta propiedad da como resultado una excepción.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda