date
Muestra la fecha y la hora del equipo, o las cambia.
Imprime la fecha y la hora del sistema, y con -d calcula otras fechas a partir de la actual. Lo usas para saber la hora, para darle el formato que necesites en un script o para saber cuándo se modificó un archivo. Cambiar la hora del sistema casi nunca se hace con date: para eso están timedatectl y el sincronizador de hora del sistema.
date [opciones] [+FORMATO]date -s mueve el reloj de todo el equipo de golpe: los certificados de internet dejan de validar, los registros quedan con horas raras y una base de datos puede quedar corrupta. Además, si el sistema corrige la hora solo con NTP, tu cambio se pierde a los pocos minutos. Para corregir la hora de verdad usa timedatectl, no date -s.
Despiece
6 ejemplosVer la fecha y la hora
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | date | Comando | El comando que muestra la fecha y la hora del sistema. |
Sale algo como Sun Oct 4 03:56:17 AM CST 2026: día de la semana, mes, día, hora en formato de 12 horas, el nombre corto de tu huso (CST en México central) y el año. Sin opciones, date usa la hora local, no la universal.
Ver la hora universal
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | date | Comando | El comando que muestra la fecha y la hora del sistema. |
| 2 | -u | Opción | Muestra la hora universal (UTC) en vez de la local. |
La misma hora pero en UTC: Sun Oct 4 09:56:17 AM UTC 2026, seis horas adelante de la local en Ciudad de México. Los servidores y los registros de red suelen trabajar en UTC porque no cambian con las horas de verano; por eso es la hora que comparas entre máquinas.
Darle el formato que quieras
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | date | Comando | El comando que muestra la fecha y la hora del sistema. |
| 2 | "+%Y-%m-%d %H:%M:%S" | Valor | El formato que quieres, con un + adelante y entre comillas. |
Imprime 2026-10-04 03:56:17. Cada código es una parte de la fecha: %Y año de cuatro dígitos, %m mes con dos, %d día, %H hora de 24 horas, %M minutos y %S segundos. Con +%d/%m/%Y sale 04/10/2026. Entre comillas para que la terminal no toque nada.
Calcular otra fecha
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | date | Comando | El comando que muestra la fecha y la hora del sistema. |
| 2 | -d | Opción | En vez de la hora de ahora, calcula la que describes en el texto que sigue. |
| 3 | "tomorrow 14:30" | Argumento | La fecha que quieres calcular. Las palabras van en inglés y la hora en formato de 24 horas. |
Imprime Mon Oct 5 02:30:00 PM CST 2026, o sea mañana a las dos y media de la tarde. Ojo: date solo entiende palabras en inglés. Con date -d "mañana" te responde date: invalid date, porque mañana no existe para él; usa tomorrow, yesterday o next monday.
Ver cuándo se modificó un archivo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | date | Comando | El comando que muestra la fecha y la hora del sistema. |
| 2 | -r | Opción | Toma la fecha del archivo que sigue, no la de ahora. |
| 3 | /etc/hostname | Argumento | El archivo del que quieres la fecha de modificación. |
Imprime Wed Mar 4 17:37:35 CST 2026, la última vez que alguien tocó ese archivo. Sirve para saber cuándo se instaló o configuró algo, o para comparar dos archivos. ls -l también te muestra esa fecha, junto con los permisos.
Cambiar la hora del sistema
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sudo | Comando | Se ejecuta con permisos de administrador (root). Te pide tu contraseña la primera vez. |
| 2 | date | Comando | El comando que muestra la fecha y la hora del sistema. |
| 3 | -s | Opción | Cambia la fecha y la hora del sistema en vez de solo mostrarlas. |
| 4 | "2026-10-04 12:00:00" | Argumento | La fecha y hora nuevas, con año-mes-día y luego hora:minuto:segundo. |
Fija el reloj del equipo en esa fecha y hora, sin imprimir nada. Tiene que ser con sudo: sin él responde date: cannot set date: Operation not permitted. En Debian 13 y Ubuntu 24.04 la forma correcta es sudo timedatectl set-time "2026-10-04 12:00:00", y antes conviene ver si el equipo está sincronizando la hora con timedatectl status, porque si el servicio de hora está activo te va a corregir el reloj.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -u--utc | Muestra la hora universal (UTC) en vez de la local de tu ciudad. En México la diferencia suele ser de 6 horas. |
| -d--date=STRING | Muestra otra fecha en vez de la de ahora: tomorrow, yesterday, +30 days, 2026-01-15. Las palabras se escriben en inglés. |
| -r--reference=ARCHIVO | Muestra la fecha en que se modificó un archivo por última vez. |
| -s--set=STRING | Cambia la fecha y la hora del sistema. Necesita root y, en Debian y Ubuntu, conviene usar timedatectl en su lugar. |
| -I--iso-8601 | Formato estándar ISO 8601: 2026-10-04. Con -Iseconds incluye la hora: 2026-10-04T03:56:17-06:00. |
| -R--rfc-email | El formato que usan los correos: Mon, 04 Oct 2026 03:56:17 -0600. |
| -f--file=ARCHIVO | Lee fechas de un archivo, una por línea, y aplica en cada una lo que pediste. Se usa en scripts. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Escribir la fecha con palabras en español: date -d "mañana". | date responde date: invalid date ‘mañana’. Las palabras que entiende van en inglés: tomorrow, yesterday, next friday, 2 weeks ago. Para las 9 de mañana: date -d "tomorrow 09:00". |
| Correr date -s sin sudo. | Te responde date: cannot set date: Operation not permitted, porque el reloj es de root. Necesitas sudo date -s "..." y aun así es mejor timedatectl, que además te avisa si la hora está desfasada. |
| Confundir %m con %M. | La minúscula es el mes (%m, con dos dígitos) y la mayúscula son los minutos (%M). También %d es el día, %H la hora en 24 horas e %I la hora en 12 horas con AM o PM. Con date "+%Y-%m-%d %H:%M:%S" te queda todo claro. |
| Comparar tu hora local con la de un servidor y ver dos horas de diferencia. | date usa tu hora local y date -u la universal. En México la diferencia suele ser de 6 horas, así que si tu hora local son las 10 de la mañana, en UTC son las 4 de la tarde. Cuando comparas máquinas o lees logs de un servidor, casi siempre estás viendo UTC. |
Preguntas frecuentes
- ¿Cómo veo la fecha y la hora de mi máquina?
- Con date, sin opciones: sale el día, la fecha, la hora y el nombre corto de tu huso horario al final. Usa date -u para ver la hora universal, que es la que usan casi todos los servidores. Para un formato limpio y ordenable, date +%Y-%m-%d te da 2026-10-04.
- ¿Cómo cambio la fecha y la hora del sistema?
- En Debian 13 y Ubuntu 24.04 con sudo timedatectl set-time "2026-10-04 12:00:00". Antes revisa timedatectl status para ver si la hora se está sincronizando sola con NTP, porque en ese caso tu cambio se pierde; y si lo que está mal es el huso, usa sudo timedatectl set-timezone America/Mexico_City. date -s funciona, pero no se lleva bien con esa sincronización.
- ¿Cómo sé cuándo se modificó un archivo?
- Con date -r archivo te imprime la fecha de modificación. Para ver también los permisos y el dueño en la misma línea, usa ls -l archivo, que ahí sí aparece la fecha. Para saber cuándo se cambió algo del sistema, conviene journalctl.
- ¿Cómo calculo qué día será dentro de 30 días?
- Con date -d "+30 days". Las palabras y los tamaños van en inglés: yesterday, next monday, "2 weeks ago", "-3 days". Y para sacar la fecha de un número que te den, como un timestamp de una API, usa date -d @1600000000.
- ¿Cuál es la diferencia entre date y timedatectl?
- date viene de coreutils y sirve para mostrar y calcular fechas, y de paso cambiar la hora, aunque no es lo ideal. timedatectl viene de systemd y administra la hora del sistema: la cambia, configura el huso y muestra si la sincronización con los servidores de hora está activa y qué tan desviada está.