tipo from fechas create comparar swift3 date-comparison

swift3 - from - cómo comparar la fecha en swift 3.0?



swift date operations (4)

La respuesta de Per @ NiravD, Date es Comparable . Sin embargo, si desea comparar con una granularidad dada, puede usar la compare(_:to:toGranularity:) Calendar compare(_:to:toGranularity:)

Ejemplo…

let dateRangeStart = Date() let dateRangeEnd = Date().addingTimeInterval(1234) // Using granularity of .minute let order = Calendar.current.compare(dateRangeStart, to: dateRangeEnd, toGranularity: .minute) switch order { case .orderedAscending: print("/(dateRangeEnd) is after /(dateRangeStart)") case .orderedDescending: print("/(dateRangeEnd) is before /(dateRangeStart)") default: print("/(dateRangeEnd) is the same as /(dateRangeStart)") } > 2017-02-17 10:35:48 +0000 is after 2017-02-17 10:15:14 +0000 // Using granularity .hour let order = Calendar.current.compare(dateRangeStart, to: dateRangeEnd, toGranularity: .hour) > 2017-02-17 10:37:23 +0000 is the same as 2017-02-17 10:16:49 +0000

Tengo dos fechas y quiero compararlo. ¿Cómo puedo comparar fechas? Tengo que fechar objetos. Diga modificateionDate updatedDate .

Entonces, ¿cuál es la mejor práctica para comparar fechas?


Swift tiene ComparativeResult con orderedAscending, orderedDescending y lo mismo que a continuación.

if modificateionDate.compare(updatedDate) == ComparisonResult.orderedAscending { //Do what you want }

Espero que esto te pueda ayudar.


Date ahora se ajusta al protocolo Comparable . Entonces, simplemente puede usar < , > y == para comparar dos objetos tipo Date .

if modificateionDate < updatedDate { //modificateionDate is less than updatedDate }


Swift iOS 8 en adelante Cuando necesita más que simples comparaciones de fechas más grandes o más pequeñas. Por ejemplo, es el mismo día o el día anterior, ...

Nota: Nunca olvides la zona horaria. La zona horaria del calendario tiene un valor predeterminado, pero si no le gusta el valor predeterminado, debe configurar la zona horaria usted mismo. Para saber qué día es, necesita saber en qué zona horaria está preguntando.

extension Date { func compareTo(date: Date, toGranularity: Calendar.Component ) -> ComparisonResult { var cal = Calendar.current cal.timeZone = TimeZone(identifier: "Europe/Paris")! return cal.compare(self, to: date, toGranularity: toGranularity) } }

Úselo así:

if thisDate.compareTo(date: Date(), toGranularity: .day) == .orderedDescending { // thisDate is a previous day }

Para un ejemplo más complejo de cómo usar esto en un filtro, vea esto:

https://.com/a/45746206/4946476