Vous pouvez utiliser, par exemple, un date --set='-2 years'retour en arrière de deux ans, en laissant tous les autres éléments identiques. Vous pouvez changer le mois et le jour du mois de la même manière. Je n'ai pas vérifié ce qui se passe si ce résultat donne une date / heure inexistante, par exemple lors d'un basculement DST, mais le comportement doit être identique au comportement habituel consistant à "définir à la fois la date et l'heure à des valeurs concrètes".
Christian Severin
En supposant que vous essayiez de régler la date à l'heure actuelle, vous pouvez sudo ntpd -gqconfigurer le système pour qu'il se mette à jour automatiquement à l'aide du service ntp.
Exécutez cela en tant que root ou sous sudo. Changer seulement une année / mois / jour est plus difficile et impliquera de répéter des bits de la date actuelle. Il existe également des outils de date d'interface graphique intégrés aux principaux environnements de bureau, généralement accessibles via l'horloge.
Pour changer seulement une partie du temps, 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 datepour le formatage de détails pour construire d' autres combinaisons: les composants individuels sont %Y, %m, %d, %H, %Met %S.
Il n'y a pas d'option pour faire ça. Vous pouvez cependant utiliser date -s "2014-12-25 $(date +%H:%M:%S)"pour changer la date et réutiliser l'heure actuelle.
Michael Homer
est venu ici et les heures ainsi que les minutes correspondaient à l'heure actuelle. - nice
Alex2php
3
date: cannot set date: Invalid argument
Chris Stryczynski
@MichaelHomer @SHW il est possible de ne changer que la date avec une commande comme date -s 2018-01-01. Quelqu'un a également partagé cela dans une réponse: superuser.com/questions/870068/…
baptx
42
Le temps du système
Vous pouvez utiliser datepour définir la date du système. L'implémentation GNU de date(comme sur la plupart des systèmes basés sur Linux non intégrés) accepte de nombreux formats différents pour régler l'heure, en 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'
mettre seulement le jour:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
ensemble tous ensemble:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Temps de matériel
Maintenant, l'heure du système est définie, mais vous souhaiterez peut-être la synchroniser avec l'horloge matérielle:
Utilisez --showpour imprimer l'heure du matériel:
hwclock --show
Vous pouvez régler l'horloge matérielle sur l'heure système actuelle:
Des points bonus pour illustrer des manières non évidentes de définir la date avec des exemples et pour indiquer la différence entre "l'heure système" et "l'horloge matérielle". Réponse très utile!
Mark Edington
3
Vous changez la date avec la datecommande. Cependant, la commande attend une date complète comme argument:
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
Pour modifier une partie de la date, indiquez la date actuelle avec la partie de date à modifier en tant que chaîne et toutes les autres en tant que variables de formatage de date. Puis passez cela à la date -scommande pour la définir:
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Facile
Le moyen le plus simple est d'utiliser date -scar cela permet d'utiliser des dates relatives 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 date n'a pas changé car elle a été exécutée avec un utilisateur limité $. Si vous voulez réellement que la date soit modifiée, 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'une date relative est aussi simple que de le 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')"
remplacez n'importe lequel %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
direct
Le deuxième formulaire d’appel est utilisé pour modifier directement la date du système.
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
J'ai utilisé la commande de date et le format d'heure énumérés ci-dessous pour définir avec succès la date à partir de la commande terminal shell exécutée sur Android Things, qui utilise Linux Kernal.
Puisque cela ne fonctionne ni avec GNU ni avec BSD date, pourriez-vous ajouter des informations supplémentaires sur le système concerné et sur la pertinence de ce système pour cette question?
date --set='-2 years'
retour en arrière de deux ans, en laissant tous les autres éléments identiques. Vous pouvez changer le mois et le jour du mois de la même manière. Je n'ai pas vérifié ce qui se passe si ce résultat donne une date / heure inexistante, par exemple lors d'un basculement DST, mais le comportement doit être identique au comportement habituel consistant à "définir à la fois la date et l'heure à des valeurs concrètes".sudo ntpd -gq
configurer le système pour qu'il se mette à jour automatiquement à l'aide du service ntp.Réponses:
Utiliser
date -s
:Exécutez cela en tant que root ou sous
sudo
. Changer seulement une année / mois / jour est plus difficile et impliquera de répéter des bits de la date actuelle. Il existe également des outils de date d'interface graphique intégrés aux principaux environnements de bureau, généralement accessibles via l'horloge.Pour changer seulement une partie du temps, vous pouvez utiliser la substitution de commande dans la chaîne de date:
changera la date, mais gardera l'heure. Voir
man date
pour le formatage de détails pour construire d' autres combinaisons: les composants individuels sont%Y
,%m
,%d
,%H
,%M
et%S
.la source
date -s "2014-12-25 $(date +%H:%M:%S)"
pour changer la date et réutiliser l'heure actuelle.date: cannot set date: Invalid argument
date -s 2018-01-01
. Quelqu'un a également partagé cela dans une réponse: superuser.com/questions/870068/…Le temps du système
Vous pouvez utiliser
date
pour définir la date du système. L'implémentation GNU dedate
(comme sur la plupart des systèmes basés sur Linux non intégrés) accepte de nombreux formats différents pour régler l'heure, en voici quelques exemples:définir uniquement l'année:
définir uniquement le mois:
mettre seulement le jour:
ensemble tous ensemble:
Temps de matériel
Maintenant, l'heure du système est définie, mais vous souhaiterez peut-être la synchroniser avec l'horloge matérielle:
Utilisez
--show
pour imprimer l'heure du matériel:Vous pouvez régler l'horloge matérielle sur l'heure système actuelle:
Ou l'heure du système à l'horloge matérielle
la source
Vous changez la date avec la
date
commande. Cependant, la commande attend une date complète comme argument:Pour modifier une partie de la date, indiquez la date actuelle avec la partie de date à modifier en tant que chaîne et toutes les autres en tant que variables de formatage de date. Puis passez cela à la
date -s
commande pour la définir:change le mois en 12ème mois - décembre.
Les formats de date sont:
%Y
- Année%m
- mois%d
- Journée%H
- heure%M
- minutela source
Pour ceux qui utilisent ESXI 5.1 comme moi, voici ce que le système m'a répondu
J'ai dû utiliser une commande ESX spécifique à la place:
la source
La commande pour changer la date du système est
date
.Il existe deux manières d' appeler la commande date (sous Linux):
Facile
Le moyen le plus simple est d'utiliser
date -s
car cela permet d'utiliser des dates relatives simplesLa date n'a pas changé car elle a été exécutée avec un utilisateur limité
$
. Si vous voulez réellement que la date soit modifiée, utilisez root (#
) ou sudo:Donc, changer n'importe quelle partie d'une date relative est aussi simple que de le nommer:
Les dates absolues sont un peu plus complexes car elles nécessitent plus de détails:
Ou, vous pouvez utiliser la commande date deux fois:
remplacez n'importe lequel
%
par une valeur valide et la date sera définie (uniquement en tant que root).direct
Le deuxième formulaire d’appel est utilisé pour modifier directement la date du système.
Alors :
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 en
date
tant qu'utilisateur limité de voir ce que cela ferait (sans rien changer):Ou, si vous voulez réellement changer la date, en tant que root:
Notez que des services comme NTP ou Chrony seront affectés. Et, si redémarré, la date sera remise à la date réelle.
Ajoutez un AA pour définir l'année:
Ou un EYC pour définir l'année et le siècle:
la source
J'ai utilisé la commande de date et le format d'heure énumérés ci-dessous pour définir avec succès la date à partir de la commande terminal shell exécutée sur Android Things, qui utilise Linux Kernal.
date 092615002017.00
MMDDHHMMYYYY.SS
MM - Mois - 09
JJ - Jour - 26
HH - Heure - 15
MM - Min - 00
YYYY - Année - 2017
.SS - seconde - 00
la source
date
, pourriez-vous ajouter des informations supplémentaires sur le système concerné et sur la pertinence de ce système pour cette question?