Utilisez date -s
:
date -s '2014-12-25 12:34:56'
Exécutez-le en tant que root ou sous sudo
. Changer un seul de l'année/mois/jour est plus un défi et impliquera de répéter des bits de la date actuelle. Il existe également des outils de date GUI intégrés aux principaux environnements de bureau, généralement accessibles via l'horloge.
Pour ne changer qu'une partie de l'heure, vous pouvez utiliser la substitution de commande dans la chaîne de date :
date -s "2014-12-25 $(date +%H:%M:%S)"
changera la date, mais gardera l'heure. Voir man date
pour les détails de mise en forme pour construire d'autres combinaisons :les composants individuels sont %Y
, %m
, %d
, %H
, %M
, et %S
.
Heure système
Vous pouvez utiliser date
pour régler la date du système. L'implémentation GNU de date
(comme sur la plupart des systèmes basés sur Linux non embarqués) accepte de nombreux formats différents pour régler l'heure, voici quelques exemples :
définir uniquement l'année :
date -s 'next year'
date -s 'last year'
définir uniquement le mois :
date -s 'last month'
date -s 'next month'
définir uniquement le jour :
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
mettre tous ensemble :
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Temps matériel
L'heure système est maintenant définie, mais vous pouvez la synchroniser avec l'horloge matérielle :
Utilisez --show
pour imprimer l'heure matérielle :
hwclock --show
Vous pouvez régler l'horloge matérielle sur l'heure système actuelle :
hwclock --systohc
Ou l'heure système à l'horloge matérielle
hwclock --hctosys
La commande pour changer la date système est date
.
Il existe deux manières d'appeler la commande date (sous Linux) :
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Facile
Le plus simple est d'utiliser date -s
car il permet l'utilisation de simples parent rendez-vous
$ 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 date n'a pas changé car elle a été exécutée avec un utilisateur limité $
. Si vous voulez réellement changer la date, utilisez root (#
) ou sudo :
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
Donc, changer n'importe quelle partie d'un parent date est aussi simple que de la nommer :
$ 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
Les dates absolues sont un peu plus complexes car elles nécessitent plus de détails :
$ date -s "2001-07-23 10:11:12"
Ou, vous pouvez utiliser la commande date deux fois :
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
remplacer l'un des %
par une valeur valide et la date sera définie (uniquement en tant que root).
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
directement
Le deuxième formulaire d'appel de rendez-vous est utilisé pour directement modifier la date système.
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Alors :
date 11230812 # MMDDhhmm
Fixera la date au 23 novembre à 08h et 12min.
BSD a une commande similaire mais un format différent ([[[[[cc]aa]mm]jj]HH]MM[.ss]).
Essayez date
en tant qu'utilisateur limité pour voir ce qu'il ferait (sans rien changer) :
$ date 11230812
date: cannot set date: Operation not permitted
Sat Nov 23 08:12:00 EST 2019
Ou, si vous voulez réellement changer la date, en tant que root :
# date 11230812
# date
Sat Nov 23 08:12:00 EST 2019
Notez que des services comme NTP ou chrony seront affectés. Et, s'il est redémarré, la date sera réinitialisée.
Ajoutez un YY pour définir l'année :
$ date 1123081222
date: cannot set date: Operation not permitted
Wed Nov 23 08:12:00 EST 2022
Ou un CCYY pour définir l'année et siècle :
$ date 112308121982
date: cannot set date: Operation not permitted
Tue Nov 23 08:12:00 EST 1982