回答:
使用date -s
:
date -s '2014-12-25 12:34:56'
これをrootまたはの下で実行しますsudo
。年/月/日のいずれか1つだけを変更することは、より困難であり、現在の日付のビットを繰り返す必要があります。また、主要なデスクトップ環境に組み込まれたGUI日付ツールもあり、通常は時計を介してアクセスされます。
時刻の一部のみを変更するには、日付文字列でコマンド置換を使用できます。
date -s "2014-12-25 $(date +%H:%M:%S)"
日付は変更されますが、時間は保持されます。参照してください。man date
個々のコンポーネントは次のとおりです。他の組み合わせを構築するための詳細をフォーマットするために%Y
、%m
、%d
、%H
、%M
、と%S
。
date -s "2014-12-25 $(date +%H:%M:%S)"
ただし、日付を変更して現在の時刻を再利用するために使用できます。
date: cannot set date: Invalid argument
date -s 2018-01-01
ます。誰かが答えでこれを共有しました:superuser.com/questions/870068/…–
システム時刻
を使用date
して、システムの日付を設定できます。GNU実装date
(ほとんどの非組み込みLinuxベースのシステムで見られる)は、時間を設定するためにさまざまな形式を受け入れます。ここにいくつかの例を示します。
年のみを設定します。
date -s 'next year'
date -s 'last year'
月のみを設定します。
date -s 'last month'
date -s 'next month'
日のみを設定します。
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
すべて一緒に設定:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
ハードウェア時間
これでシステム時刻が設定されましたが、ハードウェアクロックと同期することができます。
--show
ハードウェア時間を印刷するために使用します。
hwclock --show
ハードウェアクロックを現在のシステム時刻に設定できます。
hwclock --systohc
またはシステム時刻をハードウェアクロックに
hwclock --hctosys
date
コマンドで日付を変更します。ただし、コマンドは引数として完全な日付を予期します。
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
日付の一部を変更するには、変更する日付部分を含む現在の日付を文字列として出力し、他のすべてを日付書式変数として出力します。次に、それをdate -s
コマンドに渡して設定します。
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
月を12月-12月に変更します。
日付形式は次のとおりです。
%Y
-年%m
- 月%d
- 日%H
-時間%M
- 分システムの日付を変更するコマンドはdate
です。
dateコマンドを呼び出す方法は2つあります(Linuxの場合):
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
最も簡単な方法はdate -s
、単純な 相対日付を使用できるため、使用することです
$ 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
日付は制限されたユーザーで実行されたため、変更されませんでした$
。実際に日付を変更する場合は、ルート(#
)またはsudoを使用します。
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
したがって、相対日付の任意の部分を変更するのは、名前を付けるのと同じくらい簡単です。
$ 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
絶対日付は、詳細が必要なため、もう少し複雑です。
$ date -s "2001-07-23 10:11:12"
または、dateコマンドを2回使用できます。
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
いずれかを%
有効な値に置き換えると、日付が設定されます(ルートとしてのみ)。
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
2番目の日付呼び出しフォームは、システム日付を直接変更するために使用されます。
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
そう :
date 11230812 # MMDDhhmm
日付を11月23日の08hと12minに設定します。
BSDには同様のコマンドがありますが、フォーマットが異なります([[[[[cc] yy] mm] dd] HH] MM [.ss])。
date
制限付きユーザーとして試して、何も変更しないで何が起こるかを確認してください。
$ date 11230812
date: cannot set date: Operation not permitted
Sat Nov 23 08:12:00 EST 2019
または、ルートとして実際に日付を変更する場合:
# date 11230812
# date
Sat Nov 23 08:12:00 EST 2019
NTPやchronyなどのサービスが影響を受けることに注意してください。また、再起動すると、日付が実際の日付にリセットされます。
YYを追加して年を設定します。
$ date 1123081222
date: cannot set date: Operation not permitted
Wed Nov 23 08:12:00 EST 2022
または、年と世紀を設定するCCYY :
$ date 112308121982
date: cannot set date: Operation not permitted
Tue Nov 23 08:12:00 EST 1982
Linux Kernalを使用するAndroid Thingsで実行されるターミナルシェルコマンドから日付を正常に設定するために、以下にリストするdateコマンドと時刻形式を使用しました。
日付092615002017.00
MMDDHHMMYYYY.SS
MM-月-09
DD-日-26
HH-時間-15
MM-最小-00
YYYY-年-2017
.SS-秒-00
date
どのシステムに関連するのか、この特定の質問にどのように関連するのかについての情報を追加してください。
date --set='-2 years'
、他のすべての要素を同一のままにして、時計を2年前に戻すために使用できます。月と日は同じ方法で変更できます。たとえば、DSTの切り替え中など、実際に存在しない日時が計算の結果として発生する場合、何が起こるかを確認していませんが、動作は通常の「日付と時刻の両方を具体的な値に設定する」動作と同じである必要があります。