Puede usar, por ejemplo, date --set='-2 years'para retrasar el reloj dos años, dejando todos los demás elementos idénticos. Puede cambiar el mes y el día del mes de la misma manera. No he comprobado qué sucede si ese cálculo da como resultado una fecha y hora que en realidad no existe, por ejemplo, durante un cambio de horario de verano, pero el comportamiento debe ser idéntico al comportamiento habitual de "establecer la fecha y la hora en valores concretos".
Christian Severin
Suponiendo que intente establecer la fecha a la hora actual, puede hacer sudo ntpd -gqque el sistema se actualice automáticamente utilizando el servicio ntp.
Ejecuta eso como root o under sudo. Cambiar solo uno del año / mes / día es más difícil e implicará repetir partes de la fecha actual. También hay herramientas de fecha GUI integradas en los principales entornos de escritorio, generalmente accesibles a través del reloj.
Para cambiar solo una parte del tiempo, puede usar la sustitución de comandos en la cadena de fecha:
date -s "2014-12-25 $(date +%H:%M:%S)"
cambiará la fecha, pero mantendrá la hora. Ver man datepara formatear datos para construir otras combinaciones: los componentes individuales son %Y, %m, %d, %H, %M, y %S.
No hay opción para hacer eso. Sin date -s "2014-12-25 $(date +%H:%M:%S)"embargo, puede usar para cambiar la fecha y reutilizar la hora actual.
Michael Homer
llegó aquí y las horas y los minutos coincidían con la hora actual. - agradable
Alex2php
3
date: cannot set date: Invalid argument
Chris Stryczynski
@MichaelHomer @SHW es posible cambiar solo la fecha con un comando como date -s 2018-01-01. Alguien compartió esto en una respuesta también: superuser.com/questions/870068/...
baptx
42
hora del sistema
Puede usar datepara configurar la fecha del sistema. La implementación de GNU de date(como se encuentra en la mayoría de los sistemas basados en Linux no integrados) acepta muchos formatos diferentes para establecer el tiempo, aquí hay algunos ejemplos:
establecer solo el año:
date -s 'next year'
date -s 'last year'
establecer solo el mes:
date -s 'last month'
date -s 'next month'
establecer solo el día:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
conjunto todo junto:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Tiempo de hardware
Ahora la hora del sistema está configurada, pero es posible que desee sincronizarla con el reloj del hardware:
Use --showpara imprimir el tiempo de hardware:
hwclock --show
Puede configurar el reloj del hardware a la hora actual del sistema:
Puntos de bonificación para ilustrar las formas no obvias de establecer la fecha con ejemplos y para señalar la diferencia entre la "hora del sistema" y el "reloj de hardware". Muy útil respuesta!
Mark Edington
3
Cambia la fecha con el datecomando. Sin embargo, el comando espera una fecha completa como argumento:
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
Para cambiar parte de la fecha, envíe la fecha actual con la parte de fecha que desea cambiar como una cadena y todas las demás como variables de formato de fecha. Luego pasa eso al date -scomando para configurarlo:
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
Intento cambiar pero no está cambiando: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Wed Sep 30 10:05:59 +0530 2015 $ date Thu May 23 15:10:37 +0530 2019
Vinod
2
Para aquellos como yo con ESXI 5.1, esto es lo que me respondió el sistema
~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'
Tuve que usar un comando ESX específico en su lugar:
esxcli system time set -y 2016 -M 03 -d 23 -H 10 -m 05 -s 00
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Fácil
La forma más fácil es usarlo, date -sya que permite el uso de fechas relativas simples
$ date -s yesterday; date
date: cannot set date: Operation not permitted
Sat Jan 5 07:21:07 EST 2019
Sun Jan 6 07:21:07 EST 2019
La fecha no cambió porque se ejecutó con un usuario limitado $. Si realmente desea cambiar la fecha, use root ( #) o sudo:
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
Por lo tanto, cambiar cualquier parte de una fecha relativa es tan fácil como nombrarla:
$ date -s "5 years ago"
Mon Jan 6 08:26:26 EST 2014
$ date -s "+6 months"
Sat Jul 6 08:28:39 EDT 2019
$ date -s "+3 hours -13 minutes"
Sun Jan 6 11:16:59 AST 2019
Las fechas absolutas son un poco más complejas ya que necesitan más detalles:
$ date -s "2001-07-23 10:11:12"
O puede usar el comando de fecha dos veces:
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
reemplace cualquiera de los %valores válidos y se establecerá la fecha (solo como raíz).
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
directo
El formulario de llamada de segunda fecha se usa para cambiar directamente la fecha del sistema.
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Entonces :
date 11230812 # MMDDhhmm
Fijará la fecha al 23 de noviembre a las 08h y 12min.
Utilicé el comando de fecha y el formato de hora que se enumeran a continuación para establecer con éxito la fecha desde el comando de shell del terminal realizado en Android Things que usa Linux Kernal.
Dado que esto no funciona con GNU o BSD date, ¿podría agregar más información sobre para qué sistema es relevante y cómo es relevante para esta pregunta en particular?
date --set='-2 years'
para retrasar el reloj dos años, dejando todos los demás elementos idénticos. Puede cambiar el mes y el día del mes de la misma manera. No he comprobado qué sucede si ese cálculo da como resultado una fecha y hora que en realidad no existe, por ejemplo, durante un cambio de horario de verano, pero el comportamiento debe ser idéntico al comportamiento habitual de "establecer la fecha y la hora en valores concretos".sudo ntpd -gq
que el sistema se actualice automáticamente utilizando el servicio ntp.Respuestas:
Uso
date -s
:Ejecuta eso como root o under
sudo
. Cambiar solo uno del año / mes / día es más difícil e implicará repetir partes de la fecha actual. También hay herramientas de fecha GUI integradas en los principales entornos de escritorio, generalmente accesibles a través del reloj.Para cambiar solo una parte del tiempo, puede usar la sustitución de comandos en la cadena de fecha:
cambiará la fecha, pero mantendrá la hora. Ver
man date
para formatear datos para construir otras combinaciones: los componentes individuales son%Y
,%m
,%d
,%H
,%M
, y%S
.fuente
date -s "2014-12-25 $(date +%H:%M:%S)"
embargo, puede usar para cambiar la fecha y reutilizar la hora actual.date: cannot set date: Invalid argument
date -s 2018-01-01
. Alguien compartió esto en una respuesta también: superuser.com/questions/870068/...hora del sistema
Puede usar
date
para configurar la fecha del sistema. La implementación de GNU dedate
(como se encuentra en la mayoría de los sistemas basados en Linux no integrados) acepta muchos formatos diferentes para establecer el tiempo, aquí hay algunos ejemplos:establecer solo el año:
establecer solo el mes:
establecer solo el día:
conjunto todo junto:
Tiempo de hardware
Ahora la hora del sistema está configurada, pero es posible que desee sincronizarla con el reloj del hardware:
Use
--show
para imprimir el tiempo de hardware:Puede configurar el reloj del hardware a la hora actual del sistema:
O la hora del sistema para el reloj de hardware
fuente
Cambia la fecha con el
date
comando. Sin embargo, el comando espera una fecha completa como argumento:Para cambiar parte de la fecha, envíe la fecha actual con la parte de fecha que desea cambiar como una cadena y todas las demás como variables de formato de fecha. Luego pasa eso al
date -s
comando para configurarlo:cambia el mes al mes 12 - diciembre.
Los formatos de fecha son:
%Y
- Año%m
- mes%d
- día%H
- hora%M
- Minutofuente
Para aquellos como yo con ESXI 5.1, esto es lo que me respondió el sistema
Tuve que usar un comando ESX específico en su lugar:
fuente
El comando para cambiar la fecha del sistema es
date
.Hay dos formas de llamar al comando de fecha (en Linux):
Fácil
La forma más fácil es usarlo,
date -s
ya que permite el uso de fechas relativas simplesLa fecha no cambió porque se ejecutó con un usuario limitado
$
. Si realmente desea cambiar la fecha, use root (#
) o sudo:Por lo tanto, cambiar cualquier parte de una fecha relativa es tan fácil como nombrarla:
Las fechas absolutas son un poco más complejas ya que necesitan más detalles:
O puede usar el comando de fecha dos veces:
reemplace cualquiera de los
%
valores válidos y se establecerá la fecha (solo como raíz).directo
El formulario de llamada de segunda fecha se usa para cambiar directamente la fecha del sistema.
Entonces :
Fijará la fecha al 23 de noviembre a las 08h y 12min.
BSD tiene un comando similar pero un formato diferente ([[[[[cc] aa] mm] dd] HH] MM [.ss]).
Intente
date
como usuario limitado para ver qué haría (sin cambiar nada):O, si realmente desea cambiar la fecha, como root:
Tenga en cuenta que los servicios como NTP o chrony se verán afectados. Y, si se reinicia, restablecerá la fecha a la real.
Agregue un AA para establecer el año:
O un CCYY para establecer año y siglo:
fuente
Utilicé el comando de fecha y el formato de hora que se enumeran a continuación para establecer con éxito la fecha desde el comando de shell del terminal realizado en Android Things que usa Linux Kernal.
fecha 092615002017.00
MMDDHHMMYYYY.SS
MM - Mes - 09
DD - Día - 26
HH - Hora - 15
MM - Min - 00
AAAA - Año - 2017
.SS - segundo - 00
fuente
date
, ¿podría agregar más información sobre para qué sistema es relevante y cómo es relevante para esta pregunta en particular?