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


77

Linuxでシステムの日付を変更するには?

変わりたい:

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

2
たとえばdate --set='-2 years'、他のすべての要素を同一のままにして、時計を2年前に戻すために使用できます。月と日は同じ方法で変更できます。たとえば、DSTの切り替え中など、実際に存在しない日時が計算の結果として発生する場合、何が起こるかを確認していませんが、動作は通常の「日付と時刻の両方を具体的な値に設定する」動作と同じである必要があります。
クリスチャンセヴェリン

日付を現在の時刻に設定しようとしていると仮定するとsudo ntpd -gq、ntpサービスを使用してシステムを自動的に更新することができます。
スティーブンソロカ

回答:


96

使用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


私は、時間を変更したくない
SHW

5
それを行うオプションはありません。date -s "2014-12-25 $(date +%H:%M:%S)"ただし、日付を変更して現在の時刻を再利用するために使用できます。
マイケルホーマー14

ここに来て、時間と分が現在の時刻に一致しました。–良い
Alex2php

2
date: cannot set date: Invalid argument
クリスストライチンスキー

@MichaelHomer @SHWでは、などのコマンドを使用して日付のみを変更できdate -s 2018-01-01ます。誰かが答えでこれを共有しました:superuser.com/questions/870068/…–
baptx

42

システム時刻

を使用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

2
例で日付を設定できる非自明な方法を説明し、「システム時刻」と「ハードウェアクロック」の違いを指摘するためのボーナスポイント。非常に役立つ答えです!
マークエディントン

3

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

変更しようとしましたが、変更されていません:-$ sudo date --set = "2015-09-30 10:05:59.990" Wed Sep 30 10:05:59 +0530 2015 $ date Thu May 23 15:10:37 +0530 2019
ヴィノド

2

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

3
-1に感謝しますが、その理由を説明してもらえます?あなたがより良い/より完全な/より正確な答えを得た場合、コメントしてください。
バルミプール

1

システムの日付を変更するコマンドは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

-1

Linux Kernalを使用するAndroid Thingsで実行されるターミナルシェルコマンドから日付を正常に設定するために、以下にリストするdateコマンドと時刻形式を使用しました。

日付092615002017.00

MMDDHHMMYYYY.SS

MM-月-09

DD-日-26

HH-時間-15

MM-最小-00

YYYY-年-2017

.SS-秒-00


これはGNUまたはBSDのどちらでも動作しないため、これがdateどのシステムに関連するのか、この特定の質問にどのように関連するのかについての情報を追加してください。
クサラナナンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.