es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

DateIntervalFormatter: cadena de formato “m:ss”

Me gustaría obtener una cadena con el formato “m:ss” a partir de dos fechas.
Por ejemplo: “0:27” para una diferencia de 27 segundos y “1:30” para una diferencia de 90 segundos entre fechas.

Aquí está el código que estoy usando:

import Foundation
let formatter = DateIntervalFormatter()
formatter.dateStyle = .none
formatter.timeStyle = .none
formatter.dateTemplate = "m:ss"

let startDate = Date()
let endDate = Date(timeInterval: 1, since: startDate)

let outputString = formatter.string(from: startDate, to: endDate)
print(outputString) //16:12 – 16:13 ???
// Esto es correcto, pero en realidad no calcula el intervalo.

Pero solo obtengo dos fechas impresas con un guión. ¿Cómo puedo hacer que el DateIntervalFormatter calcule la diferencia como yo quiero?

El código es casi una muestra 1:1 de la documentación de Apple, pero con la plantilla de fecha personalizada: https://developer.apple.com/documentation/foundation/dateintervalformatter

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Necesitas usar el método string(from:to:) del DateIntervalFormatter para calcular la diferencia entre dos fechas. La propiedad dateTemplate se utiliza para dar formato al texto de salida.

    Aquí está el código actualizado:

    import Foundation
    let formatter = DateIntervalFormatter()
    formatter.dateStyle = .none
    formatter.timeStyle = .none
    formatter.dateTemplate = "m:ss"
    
    let startDate = Date()
    let endDate = Date(timeInterval: 90, since: startDate)
    
    let outputString = formatter.string(from: startDate, to: endDate)
    print(outputString) //1:30
    

Comments are closed.