Sie können z. B. date --set='-2 years'die Uhr um zwei Jahre zurückstellen, wobei alle anderen Elemente identisch bleiben. Sie können Monat und Tag des Monats auf die gleiche Weise ändern. Ich habe nicht überprüft, was passiert, wenn diese Berechnung zu einer Datums- und Uhrzeitangabe führt, die nicht tatsächlich vorhanden ist, z. B. während einer Sommerzeitumstellung. Das Verhalten sollte jedoch mit dem üblichen Verhalten "Datum und Uhrzeit auf konkrete Werte einstellen" identisch sein.
Christian Severin
Angenommen, Sie sudo ntpd -gqmöchten das Datum auf die aktuelle Uhrzeit einstellen, können Sie das System mithilfe des Dienstes ntp automatisch aktualisieren lassen.
Führen Sie das als root oder unter sudo. Das Ändern von nur einem Jahr / Monat / Tag ist eine größere Herausforderung und erfordert das Wiederholen von Bits des aktuellen Datums. Es gibt auch GUI-Datumstools, die in die wichtigsten Desktop-Umgebungen integriert sind und auf die normalerweise rund um die Uhr zugegriffen wird.
Um nur einen Teil der Zeit zu ändern, können Sie die Befehlsersetzung in der Datumszeichenfolge verwenden:
date -s "2014-12-25 $(date +%H:%M:%S)"
ändert das Datum, behält aber die Uhrzeit bei. Siehe man dateDetails Formatierung andere Kombinationen zu konstruieren: die einzelne Komponenten %Y, %m, %d, %H, %M, und %S.
Dafür gibt es keine Option. Sie können date -s "2014-12-25 $(date +%H:%M:%S)"jedoch das Datum ändern und die aktuelle Uhrzeit wiederverwenden.
Michael Homer
kamen hierher und Stunden und Minuten stimmten mit der aktuellen Zeit überein. - schön
Alex2php
2
date: cannot set date: Invalid argument
Chris Stryczynski
@MichaelHomer @SHW Es ist möglich, nur das Datum mit einem Befehl wie zu ändern date -s 2018-01-01. Jemand geteilt dies in einer Antwort auch: superuser.com/questions/870068/...
baptx
42
Systemzeit
Mit können Sie datedas Systemdatum einstellen. Die GNU-Implementierung von date(wie sie auf den meisten nicht eingebetteten Linux-basierten Systemen zu finden ist) akzeptiert viele verschiedene Formate, um die Zeit einzustellen. Hier einige Beispiele:
setze nur das Jahr:
date -s 'next year'
date -s 'last year'
setze nur den Monat:
date -s 'last month'
date -s 'next month'
setze nur den Tag:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
Set alle zusammen:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Hardware-Zeit
Jetzt ist die Systemzeit eingestellt, aber Sie können sie mit der Hardware-Uhr synchronisieren:
Verwenden Sie --show, um die Hardware-Zeit zu drucken:
hwclock --show
Sie können die Hardware-Uhr auf die aktuelle Systemzeit einstellen:
Bonuspunkte zur Veranschaulichung der nicht offensichtlichen Art und Weise, wie Sie das Datum anhand von Beispielen festlegen und auf den Unterschied zwischen der "Systemzeit" und der "Hardware-Uhr" hinweisen können. Sehr hilfreiche Antwort!
Mark Edington
3
Sie ändern das Datum mit dem dateBefehl. Der Befehl erwartet jedoch ein vollständiges Datum als Argument:
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
Um einen Teil des Datums zu ändern, geben Sie das aktuelle Datum mit dem Datumsteil, den Sie ändern möchten, als Zeichenfolge und alle anderen als Datumsformatierungsvariablen aus. Übergeben Sie das dann an den date -sBefehl, um es festzulegen:
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
Ich versuche zu ändern, aber es ändert sich nicht: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Mi Sep 30 10:05:59 +0530 2015 $ date Do Mai 23 15:10:37 +0530 2019
Vinod
2
Für diejenigen wie mich, die ESXI 5.1 ausführen, hat mir das System die folgenden Antworten gegeben
~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'
Ich musste stattdessen einen bestimmten ESX-Befehl verwenden:
esxcli system time set -y 2016 -M 03 -d 23 -H 10 -m 05 -s 00
Vielen Dank für die -1, aber würde es Ihnen etwas ausmachen zu erklären, warum ? Wenn Sie eine bessere / vollständigere / genauere Antwort haben, können Sie dies gerne kommentieren.
Balmipour
1
Der Befehl zum Ändern des Systemdatums lautet date.
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Einfach
Die einfachste Methode ist die Verwendung, date -sda einfache relative Daten verwendet werden können
$ 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
Das Datum hat sich nicht geändert, da es mit einem eingeschränkten Benutzer ausgeführt wurde $. Wenn Sie das Datum tatsächlich ändern möchten, verwenden Sie root ( #) oder sudo:
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
Das Ändern eines Teils eines relativen Datums ist also so einfach wie das Benennen:
$ 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
Absolute Daten sind etwas komplexer, da sie detaillierter sein müssen:
$ date -s "2001-07-23 10:11:12"
Oder Sie können den Datumsbefehl zweimal verwenden:
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
Ersetzen Sie einen der %Werte durch einen gültigen Wert und das Datum wird festgelegt (nur als Root).
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
Direkte
Das zweite Datumsaufrufformular wird verwendet, um das Systemdatum direkt zu ändern.
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Damit :
date 11230812 # MMDDhhmm
Stellt das Datum auf den 23. November um 08h und 12min ein.
Ich habe den Datumsbefehl und das Uhrzeitformat verwendet, die unten aufgeführt sind, um das Datum erfolgreich über den Terminal-Shell-Befehl festzulegen, der unter Android Things ausgeführt wird, das den Linux-Kernel verwendet.
Da dies weder mit GNU noch mit BSD funktioniert date, können Sie weitere Informationen darüber hinzufügen, für welches System dies relevant ist und wie es für diese bestimmte Frage relevant ist.
date --set='-2 years'
die Uhr um zwei Jahre zurückstellen, wobei alle anderen Elemente identisch bleiben. Sie können Monat und Tag des Monats auf die gleiche Weise ändern. Ich habe nicht überprüft, was passiert, wenn diese Berechnung zu einer Datums- und Uhrzeitangabe führt, die nicht tatsächlich vorhanden ist, z. B. während einer Sommerzeitumstellung. Das Verhalten sollte jedoch mit dem üblichen Verhalten "Datum und Uhrzeit auf konkrete Werte einstellen" identisch sein.sudo ntpd -gq
möchten das Datum auf die aktuelle Uhrzeit einstellen, können Sie das System mithilfe des Dienstes ntp automatisch aktualisieren lassen.Antworten:
Verwendung
date -s
:Führen Sie das als root oder unter
sudo
. Das Ändern von nur einem Jahr / Monat / Tag ist eine größere Herausforderung und erfordert das Wiederholen von Bits des aktuellen Datums. Es gibt auch GUI-Datumstools, die in die wichtigsten Desktop-Umgebungen integriert sind und auf die normalerweise rund um die Uhr zugegriffen wird.Um nur einen Teil der Zeit zu ändern, können Sie die Befehlsersetzung in der Datumszeichenfolge verwenden:
ändert das Datum, behält aber die Uhrzeit bei. Siehe
man date
Details Formatierung andere Kombinationen zu konstruieren: die einzelne Komponenten%Y
,%m
,%d
,%H
,%M
, und%S
.quelle
date -s "2014-12-25 $(date +%H:%M:%S)"
jedoch das Datum ändern und die aktuelle Uhrzeit wiederverwenden.date: cannot set date: Invalid argument
date -s 2018-01-01
. Jemand geteilt dies in einer Antwort auch: superuser.com/questions/870068/...Systemzeit
Mit können Sie
date
das Systemdatum einstellen. Die GNU-Implementierung vondate
(wie sie auf den meisten nicht eingebetteten Linux-basierten Systemen zu finden ist) akzeptiert viele verschiedene Formate, um die Zeit einzustellen. Hier einige Beispiele:setze nur das Jahr:
setze nur den Monat:
setze nur den Tag:
Set alle zusammen:
Hardware-Zeit
Jetzt ist die Systemzeit eingestellt, aber Sie können sie mit der Hardware-Uhr synchronisieren:
Verwenden Sie
--show
, um die Hardware-Zeit zu drucken:Sie können die Hardware-Uhr auf die aktuelle Systemzeit einstellen:
Oder die Systemzeit zur Hardwareuhr
quelle
Sie ändern das Datum mit dem
date
Befehl. Der Befehl erwartet jedoch ein vollständiges Datum als Argument:Um einen Teil des Datums zu ändern, geben Sie das aktuelle Datum mit dem Datumsteil, den Sie ändern möchten, als Zeichenfolge und alle anderen als Datumsformatierungsvariablen aus. Übergeben Sie das dann an den
date -s
Befehl, um es festzulegen:ändert den Monat auf den 12. Monat - Dezember.
Die Datumsformate sind:
%Y
- Jahr%m
- Monat%d
- Tag%H
- Stunde%M
- Minutequelle
Für diejenigen wie mich, die ESXI 5.1 ausführen, hat mir das System die folgenden Antworten gegeben
Ich musste stattdessen einen bestimmten ESX-Befehl verwenden:
quelle
Der Befehl zum Ändern des Systemdatums lautet
date
.Es gibt zwei Möglichkeiten, den Date-Befehl aufzurufen (unter Linux):
Einfach
Die einfachste Methode ist die Verwendung,
date -s
da einfache relative Daten verwendet werden könnenDas Datum hat sich nicht geändert, da es mit einem eingeschränkten Benutzer ausgeführt wurde
$
. Wenn Sie das Datum tatsächlich ändern möchten, verwenden Sie root (#
) oder sudo:Das Ändern eines Teils eines relativen Datums ist also so einfach wie das Benennen:
Absolute Daten sind etwas komplexer, da sie detaillierter sein müssen:
Oder Sie können den Datumsbefehl zweimal verwenden:
Ersetzen Sie einen der
%
Werte durch einen gültigen Wert und das Datum wird festgelegt (nur als Root).Direkte
Das zweite Datumsaufrufformular wird verwendet, um das Systemdatum direkt zu ändern.
Damit :
Stellt das Datum auf den 23. November um 08h und 12min ein.
BSD hat einen ähnlichen Befehl, aber ein anderes Format ([[[[cc] jj] mm] tt] HH] MM [.ss]).
Versuchen Sie
date
als eingeschränkter Benutzer zu sehen, was dies tun würde (ohne etwas zu ändern):Oder, wenn Sie das Datum tatsächlich ändern möchten, als root:
Beachten Sie, dass Dienste wie NTP oder chrony betroffen sind. Und wenn neu gestartet wird, wird das Datum wieder auf das echte zurückgesetzt.
Fügen Sie ein JJ hinzu, um das Jahr einzustellen:
Oder ein CCYY zum Einstellen von Jahr und Jahrhundert:
quelle
Ich habe den Datumsbefehl und das Uhrzeitformat verwendet, die unten aufgeführt sind, um das Datum erfolgreich über den Terminal-Shell-Befehl festzulegen, der unter Android Things ausgeführt wird, das den Linux-Kernel verwendet.
Datum 092615002017.00
MMDDHHMMYYYY.SS
MM - Monat - 09
DD - Tag - 26
HH - Stunde - 15
MM - Min - 00
JJJJ - Jahr - 2017
.SS - Sekunde - 00
quelle
date
, können Sie weitere Informationen darüber hinzufügen, für welches System dies relevant ist und wie es für diese bestimmte Frage relevant ist.