0Pricing
Swift Academy · Lección

Calendar y DateComponents

Realice operaciones aritméticas con fechas en distintos calendarios.

Calendar y DateComponents es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Calendar y DateComponents

Un Calendar interpreta un Date en unidades humanas, como año, mes y día. DateComponents contiene esos valores separados.

El calendario actual

Calendar.current refleja la configuración del usuario. Es el vínculo entre los instantes sin procesar de Date y los campos con nombre.

import Foundation

let cal = Calendar.current
print("Calendar identifier: \(cal.identifier)")

Extraer componentes

dateComponents(_:from:) extrae los campos solicitados de una fecha y los devuelve en un valor DateComponents.

import Foundation

let cal = Calendar.current
let comps = cal.dateComponents([.year, .month, .day], from: Date())
print("Year is set: \(comps.year != nil)")

Leer un solo campo

La función abreviada component(_:from:) devuelve directamente un campo como Int.

import Foundation

let cal = Calendar.current
let weekday = cal.component(.weekday, from: Date())
print("Weekday number between 1 and 7: \(1...7 ~= weekday)")

Crear un Date a partir de componentes

Rellene un DateComponents y pida al calendario que produzca el Date correspondiente mediante date(from:).

import Foundation

var comps = DateComponents()
comps.year = 2024
comps.month = 12
comps.day = 25
let cal = Calendar.current
if let date = cal.date(from: comps) {
    print("Built a date: \(date.timeIntervalSince1970 > 0)")
}

Aritmética de fechas

date(byAdding:to:) añade de forma segura una cantidad de componentes y gestiona por usted la duración de los meses y los años bisiestos.

import Foundation

let cal = Calendar.current
let now = Date()
if let nextWeek = cal.date(byAdding: .day, value: 7, to: now) {
    print(nextWeek > now)
}

Añadir varias unidades

Puede añadir varias unidades a la vez pasando un DateComponents que describa el desplazamiento.

import Foundation

let cal = Calendar.current
var offset = DateComponents()
offset.month = 1
offset.day = 3
if let future = cal.date(byAdding: offset, to: Date()) {
    print(future > Date())
}

Diferencias entre fechas

Invierta la operación: dateComponents(_:from:to:) devuelve las unidades transcurridas entre dos fechas.

import Foundation

let cal = Calendar.current
let now = Date()
let later = now.addingTimeInterval(3 * 86400)
let diff = cal.dateComponents([.day], from: now, to: later)
print("Days apart: \(diff.day ?? -1)")

Inicio del día

startOfDay(for:) devuelve la medianoche de la fecha según el calendario, lo que resulta útil para agrupar eventos por día.

import Foundation

let cal = Calendar.current
let midnight = cal.startOfDay(for: Date())
print(midnight <= Date())

Comprobar si es el mismo día

isDate(_:inSameDayAs:) indica si dos fechas corresponden al mismo día del calendario.

import Foundation

let cal = Calendar.current
let now = Date()
let soon = now.addingTimeInterval(60)
print(cal.isDate(now, inSameDayAs: soon))

Por qué usar Calendar

Hacer cálculos sumando segundos sin procesar produce resultados incorrectos al atravesar cambios de horario de verano y límites entre meses. Use siempre Calendar para los cálculos de días, meses y años.

import Foundation

let cal = Calendar.current
// Correct: add 1 month, not 30 * 86400 seconds.
if let d = cal.date(byAdding: .month, value: 1, to: Date()) {
    print("Added a month correctly: \(d > Date())")
}

Comprobación rápida

¿Qué método añade correctamente un mes a una fecha?

Resumen

Calendar convierte entre Date y campos con nombre mediante DateComponents. Ha extraído campos, creado fechas, añadido unidades con date(byAdding:), calculado diferencias y comprobado por qué la aritmética del calendario es mejor que calcular con segundos sin procesar. Siguiente tema: dar formato a las fechas para mostrarlas.

Preguntas frecuentes

¿La lección «Calendar y DateComponents» es gratis?

Sí — el texto completo de «Calendar y DateComponents» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Calendar y DateComponents»?

Realice operaciones aritméticas con fechas en distintos calendarios. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Calendar y DateComponents»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El tipo Date e intervalos de tiempo
  2. Calendar y DateComponents
  3. Formato de fechas
  4. Zonas horarias y configuraciones regionales
← Volver a Swift Academy