web-dev-qa-db-ja.com

Linux:コマンドラインから日付を設定する

Linuxでシステム日付を変更するにはどうすればよいですか?

変わりたい:

  • 年のみ
  • 月のみ
  • 日付のみ
  • 上記3つの任意の組み合わせ
81
SHW

使用する - date -s

date -s '2014-12-25 12:34:56'

ルートとして、またはSudoの下で実行します。年/月/日のいずれか1つのみを変更することはより困難であり、現在の日付の一部を繰り返す必要があります。主要なデスクトップ環境に組み込まれたGUI日付ツールもあり、通常は時計を通じてアクセスされます。

時間の一部のみを変更するには、日付文字列でコマンド置換を使用できます。

date -s "2014-12-25 $(date +%H:%M:%S)"

日付は変更されますが、時刻は保持されます。見る - man date は、他の組み合わせを構築するための詳細をフォーマットするためです。個々のコンポーネントは%Y%m%d%H%M%S

99
Michael Homer

システム時間

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
45
chaos

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-分
3
garethTheRed

ESXI 5.1を実行している私のような人のために、システムが私に答えたのはこれです

~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'

代わりに特定のESXコマンドを使用する必要がありました。

esxcli system time set  -y 2016 -M 03 -d 23  -H 10 -m 05 -s 00
2
Balmipour

システムの日付を変更するコマンドdateです。

dateコマンドを呼び出すには2つの方法があります (Linuxの場合):

   date [OPTION]... [+FORMAT]
   date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

かんたん

simplerelative日付を使用できるので、最も簡単な方法は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

したがって、relative日付の任意の部分を変更することは、名前を付けるのと同じくらい簡単です。

 $ 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日の08時間12分に設定します。

BSDも同様のコマンド を持っていますが、フォーマットが異なります([[[[[[]] yy] mm] dd] HH] MM [.ss])。

制限されたユーザーとしてdateを試し、何も変更しないでください。

 $ date 11230812
 date: cannot set date: Operation not permitted
 Sat Nov 23 08:12:00 EST 2019

または、実際に日付を変更したい場合は、rootとして以下を実行します。

 # 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
1
Isaac