(Translated by https://www.hiragana.jp/)
date (UNIX) - Wikipedia コンテンツにスキップ

date (UNIX)

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
UNIXdateコマンド

UNIXdateとは、日時にちじ表示ひょうじするコマンドである。スーパーユーザーはこのコマンドを利用りようしてシステム時刻じこく設定せっていできる。

利用りようほう

[編集へんしゅう]

オプションなしで実行じっこうした場合ばあい、dateコマンドは現在げんざい日時にちじ表示ひょうじする。より正確せいかくには、標準ひょうじゅんCライブラリ関数かんすうgettimeofday()もちいてびょう単位たんいまたはマイクロびょう単位たんい[1]オペレーティングシステム (OS) が保持ほじするシステム時刻じこくし、「タイムゾーン情報じょうほう」(UnixけいOSではtz database使つかわれる)をもちいて設定せっていされた標準時ひょうじゅんじ(タイムゾーン)に変換へんかんして表示ひょうじする[2]表示ひょうじ形式けいしきは、つき曜日ようび省略形しょうりゃくけいとなり、日付ひづけつき、コロン区切くぎりの時刻じこく標準時ひょうじゅんじとし順番じゅんばん表示ひょうじされる。システム時刻じこくEDT設定せっていみのうえでdateコマンドを実行じっこうしたれいげる。

$date
Fri Jul 27 14:12:06 EDT 2007

dateコマンドの実装じっそうはUnixけいのバリエーションによってちがいがおおきいことには注意ちゅういしておきたい。移植いしょくせいがある部分ぶぶんすくなかったためPOSIXでは-uオプションとフォーマット指定していしか標準ひょうじゅんすることが出来できなかった。それ以外いがいはすべて拡張かくちょう機能きのうであり移植いしょくせいがない。システム時刻じこく設定せってい拡張かくちょう機能きのうである。GNU Core Utilitiesをベースとするコマンドはよりおおくの拡張かくちょう機能きのう実装じっそうされている。

フォーマット

[編集へんしゅう]

dateコマンドに+はじまる以下いか文字もじれつをオプションとしてあたえることで表示ひょうじ形式けいしき(フォーマット)を変更へんこうすることができる。ひょうとおり、dateコマンドの出力しゅつりょく結果けっかロケールによって変化へんかする(混乱こんらんしないようべると、本稿ほんこうひょうにおいて、出力しゅつりょく結果けっかウィキペディアシステム時刻じこくであり、それはUTC一致いっちしている。また一部いちぶのぞいてロケールは「日本にっぽん」に設定せっていしたと仮定かていしている)。

フォーマット指示しじ(フォーマット文字もじれつ+からはじまる)
指示しじ 記述きじゅつ /れい 備考びこう
%a 曜日ようび省略形しょうりゃくけいれい: Sun.) ロケールによって結果けっかわる
%A 曜日ようび完全かんぜん表記ひょうき 木曜日もくようび ロケールによって結果けっかわる
%d (ゼロめされたdd表記ひょうき 14
%e (ゼロめしないdd表記ひょうき 14
%j そのとし経過けいか日数にっすう(ゼロ表記ひょうき 001-366
%u 月曜日げつようびを1にちとしたときの1週間しゅうかんにおける経過けいか日数にっすう(mtwtfss) 4
%w 日曜日にちようびを0にちとしたときの1週間しゅうかんにおける経過けいか日数にっすう(smtwtfs) 4
しゅう
%U 日曜日にちようびしゅう最初さいしょとみなしたときの、そのとしでの経過けいかしゅうすう(0から開始かいし 00–53
%W 月曜日げつようびしゅう最初さいしょとみなしたときの、そのとしでの経過けいかしゅうすう(0から開始かいし 00–53
%V 月曜日げつようびしゅう最初さいしょとみなしたときの、そのとしでの経過けいかしゅうすう(1から開始かいし 01–53
つき
%m 月数げっすう(mm表記ひょうき 11
%h つきめい 11月 ロケールによって結果けっかわる
%b つきめい(ロケールによっては省略しょうりゃくけいれい: Jan.) 11月 ロケールによって結果けっかわる
%B つきめい(%b指示しじにて省略しょうりゃくされたロケールでも、ほん指示しじ場合ばあい完全かんぜん表記ひょうきされるが、可変長かへんちょうである) 11月 ロケールによって結果けっかわる
とし
%y 2けた年数ねんすう(yy表記ひょうき 00–99
%Y 年数ねんすう(ccyy表記ひょうき 2024
%g 2けた年数ねんすう(%V指示しじしゅうすう対応たいおうする表記ひょうき
%G 4けた年数ねんすう(%V指示しじしゅうすう対応たいおうする表記ひょうき
世紀せいき
%C 世紀せいき(cc表記ひょうき 00–99
日付ひづけ
%D mm/dd/yy表記ひょうき 11/14/24
%x mm/dd/yy表記ひょうき(ただし、ロケール固有こゆう表現ひょうげん 11/14/2024
%F %Y-%m-%d 2024-11-14
とき
%l (小文字こもじのL) 12あいだ表記ひょうき(ゼロめせず) 4
%I (大文字おおもじのI) 12あいだ表記ひょうき(ゼロめ) 04
%k 24あいだ表記ひょうき(ゼロめせず) 4
%H 24あいだ表記ひょうき(ゼロめ) 04
%p AM/PM表記ひょうき(ロケールによるが、大文字おおもじ表記ひょうき空白くうはくをおいて「」が表記ひょうきされることがおおい) AM
%P am/pm表記ひょうき(ロケールによるが、小文字こもんじ表記ひょうき。) am
ぶん
%M ぶん(MM表記ひょうき 40
びょう
%s 1970ねん1がつ1にち00ふん0びょうUTCからのびょうすうUNIX時間じかん 1731559215
%S びょう(SS表記ひょうき 00–60
(60というのはうるうびょうによる)
%N ナノびょう 000000000–999999999
時刻じこく
%r ときぶんびょう(12あいだ表記ひょうき 04:40:15 AM
%R ときぶん(24あいだ表記ひょうき hh:mm、たとえば04:40
%T ときぶんびょう(24あいだ表記ひょうき 04:40:15
%X %H:%M:%S(ロケール固有こゆう表現ひょうげん
日時にちじ
%c ロケール固有こゆう日時にちじ表記ひょうき Sat Nov 04 12:02:33 EST 1989
標準時ひょうじゅんじ・タイムゾーン
%z RFC-822方式ほうしき数値すうち表記ひょうき(-zzzz) -0500
%Z 英字えいじ表記ひょうきのタイムゾーン。未決みけつならば空白くうはく EST

文字もじ出力しゅつりょく: %n 改行かいぎょう      %% パーセント      %t 水平すいへいタブ

デフォルトではdate数値すうちフィールドをゼロめする。

GNU date%数値すうち指定していあいだにあるフィールドにたいして、-(ハイフン)をくと空白くうはくめずフィールドをめないが、 _(アンダースコア)は空白くうはくでフィールドをめる。この動作どうさはBSDベースのdateコマンドにはてはまらない。

環境かんきょう変数へんすうTZはタイムゾーンを指定していする。ただしこのはコマンドラインパラメータで上書うわがきできる。TZになに指定していされていない場合ばあい、デフォルトでは/etc/localtime設定せってい利用りようされる(詳細しょうさい記事きじ"tz database"を参照さんしょう)。

オプション

[編集へんしゅう]

-d, -de=stringは、文字もじれつstring適応てきおうする日時にちじ表示ひょうじする。たとえば-d two days agoならばコマンド実行じっこう時点じてんから2にちまえ日時にちじ表示ひょうじする。ただし、now指定していできない。

-e=datefileは、de指定していした文字もじれつ記述きじゅつしたdatefileいちぎょうずつ処理しょりする。

-s, --set=stringは、-d, -de同様どうよう形式けいしき文字もじれつstringけ、時刻じこく設定せっていする[注釈ちゅうしゃく 1]

-nは、timed(8)ユーティリティを利用りようしたマシンの時刻じこく同期どうきおこなわない。デフォルトでは、timedが稼動かどうしている場合ばあい、dateコマンドはローカル・グループにふくまれるすべてのマシンの時刻じこく同一どういつのものに設定せっていする。-nオプションはこれを抑制よくせいする。

-uは、UTCに時刻じこく表示ひょうじ、もしくは設定せっていする。

date [-u|--utc|--universal] [mmddHHMM[[cc]yy][[.SS]]というオプションでのみ、その出力しゅつりょく結果けっかはUTCを指定していする適切てきせつ形式けいしきとなる。

-uは、GMTに指定していされたとみなす。出力しゅつりょく結果けっかれい: Sat Feb 5 14:49:42 GMT 2005

--utc, --universalはTZを地方ちほうわりにUTCに指定していされたとみなす。出力しゅつりょく結果けっかれい: Sat Feb 5 09:49:59 EST 2005

-ITIMESPEC, --iso-8601[=TIMESPEC]は、ISO 8601形式けいしき出力しゅつりょくする。TIMESPECには文字もじれつhours, minutes, secondsのいずれかを指定していでき、それぞれ時刻じこく精度せいど決定けっていする。autoと指定していすると時刻じこく表示ひょうじしなくなる。

文字もじれつなに指定していせず、ただ--iso-8601というオプションを指定していした場合ばあい、 `date'コマンドのデフォルトの表示ひょうじ、すなわち、時刻じこく省略しょうりゃくしたISO 8601形式けいしき出力しゅつりょくする。

-R, --rfc-822は、出力しゅつりょくをRFC-822準拠じゅんきょ日時にちじ文字もじれつ出力しゅつりょくする。れい: Wed, 16 Dec 2009 15:18:11 +0100

--helpは、使用しよう方法ほうほう表示ひょうじする。

Single UNIX Specification (SUS)は、たったひとつのオプション: -uのみを要求ようきゅうしている。前述ぜんじゅつしたとおり、これはタイムゾーンがあたかもUTC+0に指定していしたかのように日時にちじ表示ひょうじする。そののUNIXならびにUnixけいオペレーティングシステムでは追加ついかのオプションが提供ていきょうされる場合ばあいもある。

実行じっこうれい

[編集へんしゅう]
date "+%m/%d/%y"
7/4/06
date "+%Y%m%d"
20060704

時刻じこく変数へんすうてる場合ばあいは、

START=`date '+%r'`
echo $START
03:06:02 PM
sleep 5
echo $START
03:06:02 PM

ただし、変数へんすう時刻じこくてた瞬間しゅんかんのものである。実行じっこうした瞬間しゅんかんではない。

dateコマンド実行じっこうからちょうど昨日きのう日時にちじ変数へんすうてる場合ばあいは、

DATE=$(date -d yesterday +"%Y%m%d")
echo $DATE
20060704

ことなるタイムゾーンの時刻じこく表示ひょうじしたい場合ばあいは、環境かんきょう変数へんすうTZの上書うわがきする。 様々さまざまなタイムゾーンは/usr/share/zoneinfoディレクトリ以下いか存在そんざいする(詳細しょうさい記事きじ"tz database"を参照さんしょう)。

OLDTZ=$TZ
export TZ=GMT; echo "GMT:               `date +\"%F %R (%Z)\"`"
GMT:               2008-10-31 12:30 (GMT)
export TZ=Europe/Stockholm; echo "Stockholm:    `date +\"%F %R (%Z)\"`"
Stockholm:    2008-10-31 13:30 (CET)
export TZ=Asia/Kuala_Lumpur; echo "Kuala Lumpur:        `date +\"%F %R (%Z)\"`"
Kuala Lumpur:        2008-10-31 20:30 (MYT)
export TZ=US/Central; echo "Dallas:             `date +\"%F %R (%Z)\"`"
Dallas:             2008-10-31 07:30 (CDT)
export TZ=$OLDTZ

その利用りよう可能かのう時刻じこく文字もじれつれい

date +"%Y%m%d" -d sunday # GNU date
20060709

date +"%Y%m%d" -d last-sunday # GNU date
20060702

date +"%Y%m%d" -d last-week # GNU date
date -v -1m +"%Y%m%d" # BSD date
20060627

date +"%Y%m%d" -d last-month # GNU date
date -v -1w +"%Y%m%d" # BSD date
20060604

date +"%Y%m%d" -d last-year # GNU date
date -v -1y +"%Y%m%d" # BSD date
20050704

date +"%Y%m%d" -d next-week # GNU date
date -v 1w +"%Y%m%d" # BSD date
20060711

date +"%Y%m%d" -d next-month # GNU date
date -v 1m +"%Y%m%d" # BSD date
20060804

date +"%Y%m%d" -d next-year # GNU date
date -v 1y +"%Y%m%d" # BSD date
20070704
date +"%Y%m%d" -d "2 days ago" # GNU date
date -v -2d +"%Y%m%d" # BSD date
20060702
date +"%Y%m%d" -d "2 months ago" # GNU date
date -v -2m +"%Y%m%d" # BSD date
20060504
date +"%Y%m%d" -d "2 years ago" # GNU date
date -v -2y +"%Y%m%d" # BSD date
20040704


UNIX時間じかん表示ひょうじするには、

date +"%s" -d "Fri Apr 24 13:14:39 CDT 2009"
1240596879

UNIX時間じかんから人間にんげん可読かどく形式けいしき変換へんかんするには、

date -d "UTC 1970-01-01 1240596879 secs"
Fri Apr 24 13:14:39 CDT 2009

または、

date -ud @1000000000
Sun Sep  9 01:46:40 UTC 2001

システム時刻じこく設定せってい

[編集へんしゅう]

SUSのX/Open System Interfaces(XSI)拡張かくちょう仕様しようでは、dateコマンドは、日時にちじ設定せっていするためにも利用りよう可能かのうであると指定していされている。日時にちじ変更へんこうしたい場合ばあいは、dateともに、MMddhhmm[[cc]yy]フォーマットのオプションを指定していする。ここで、MMとは2けた表示ひょうじでの月数げっすうddは2けた表示ひょうじでの日数にっすうhhは2けた表示ひょうじでの時間じかんmmは2けた表示ひょうじでのぶんあらわす。以下いか補足ほそくてき利用りようされる。ccとし先頭せんとう2けたyyとし後半こうはん2けた数字すうじあらわす。

そののUNIXやUnixけいオペレーティングシステムでは、dateコマンドのオプションまたは日時にちじフォーマットがことなっている可能かのうせいがある。たとえば、Linuxなどいくつかのシステムでは、現在げんざい日時にちじを2004ねん9がつ8にち122ふん設定せっていする場合ばあいは、以下いかのようなコマンドラインで実行じっこうする。

date --set="20040908 01:22"

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ 設定せっていにはsettimeofday()が利用りようされる。 Manpage of GETTIMEOFDAY”. JM Project. linuxjm.sourceforge.jp (2009ねん3がつ25にち). 2011ねん8がつ12にち閲覧えつらん

出典しゅってん

[編集へんしゅう]
  1. ^ Manpage of GETTIMEOFDAY”. JM Project. linuxjm.sourceforge.jp (2009ねん3がつ25にち). 2011ねん8がつ12にち閲覧えつらん
  2. ^ 大竹おおたけりゅう (2008ねん12月26にち). “暗記あんきたよらずちゃんと理解りかい 実践じっせんでも役立やくだつLPICドリル - だい8かい Linux時刻じこく管理かんり仕組しくみと設定せってい”. アットマーク・アイティ. jibun.atmarkit.co.jp. 2011ねん8がつ12にち閲覧えつらん

関連かんれん項目こうもく

[編集へんしゅう]
  • adjtimex - Linux環境かんきょうでdateとほぼおな用途ようともちいられるコマンド。ただしこちらは直接ちょくせつシステムコールadjtimex()システム時刻じこくす。
  • hwclock英語えいごばん - システム時刻じこくだけではなくリアルタイムクロック(RTC)も操作そうさできるコマンド。システムコールioctl()使つかって/dev/rtcにアクセスし、カーネルのRTCデバイスドライバを利用りようしてRTCにアクセスする。このコマンドをもちいてシステム時刻じこくをRTCにめる、またはそのぎゃく、システム時刻じこくをRTCに同期どうきできる。RTCは通常つうじょうタイムゾーン情報じょうほう回路かいろない保持ほじしていない。そのためにRTCのタイムゾーンをさだめる設定せっていファイル(/etc/adjtime)が存在そんざいする。またシステム時刻じこくのタイムゾーン情報じょうほうすなわtz database)の設定せっていファイルはこれとべつ存在そんざいする(/etc/localtime)。これらを利用りようし、RTCとシステム時刻じこくたがいに同期どうきする場合ばあい両者りょうしゃのタイムゾーンに相違そうい発生はっせいしないよう配慮はいりょする必要ひつようがある。
  • UNIXプログラムの一覧いちらん
  • UNIX時間じかん、すなわち1970ねん1がつ1にち00ふん0びょう UTCをエポック英語えいごばんとした経過けいかびょう
  • timeとdate英語えいごばん
  • cronあたえられた日時にちじ稼動かどうするスケジューリング・ジョブを処理しょりするデーモンである。

外部がいぶリンク

[編集へんしゅう]