Date_(UNIX)とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Date_(UNIX)の意味・解説 

date (UNIX)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/13 06:36 UTC 版)

ナビゲーションに移動 検索に移動
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系のバリエーションによって違いがあることには注意しておきたい。とりわけ、GNU Core Utilitiesをベースとするコマンドは、その他POSIX実装とはかなり異なっている。

フォーマット

dateコマンドに+で始まる以下の文字列をオプションとして与えることで表示形式(フォーマット)を変更することができる。表の通り、dateコマンドの出力結果はロケールによって変化する(混乱しないよう述べると、本稿の表において、出力結果はウィキペディアシステム時刻であり、それはUTCと一致している。また一部を除いてロケールは「日本」に設定したと仮定している)。

フォーマット指示子(フォーマット文字列は+から始まる)
指示子 記述 値/例 備考
%a 曜日(省略形。例: Sun.) ロケールによって結果は変わる
%A 曜日(完全な表記) 金曜日 ロケールによって結果は変わる
%d 日(ゼロ埋めされたdd表記) 13
%e 日(ゼロ埋めしないdd表記) 13
%j その年の経過日数(ゼロ埋め表記) 001-366
%u 月曜日を1日目とした時の1週間における経過日数(mtwtfss) 5
%w 日曜日を0日目とした時の1週間における経過日数(smtwtfs) 5
%U 日曜日を週の最初の日とみなしたときの、その年での経過週数(0から開始) 00–53
%W 月曜日を週の最初の日とみなしたときの、その年での経過週数(0から開始) 00–53
%V 月曜日を週の最初の日とみなしたときの、その年での経過週数(1から開始) 01–53
%m 月数(mm表記) 08
%h 月名 8月 ロケールによって結果は変わる
%b 月名(ロケールによっては省略系。例: Jan.) 8月 ロケールによって結果は変わる
%B 月名(%b指示子にて省略されたロケールでも、本指示子の場合は完全に表記されるが、可変長である) 8月 ロケールによって結果は変わる
%y 2桁年数(yy表記) 00–99
%Y 年数(ccyy表記) 2021
%g 2桁年数(%V指示子の週数に対応する表記)
%G 4桁年数(%V指示子の週数に対応する表記)
世紀
%C 世紀(cc表記) 00–99
日付
%D mm/dd/yy表記 08/13/21
%x mm/dd/yy表記(ただし、ロケール固有の表現) 08/13/2021
%F %Y-%m-%d 2021-08-13
%l (小文字のL) 12時間表記(ゼロ埋めせず) 6
%I (大文字のI) 12時間表記(ゼロ埋め) 06
%k 24時間表記(ゼロ埋めせず) 6
%H 24時間表記(ゼロ埋め) 06
%p AM/PM表記(ロケールによるが、大文字表記。空白をおいて「時」が表記されることが多い) AM
%P am/pm表記(ロケールによるが、小文字表記。) am
%M 分(MM表記) 36
%s 1970年1月1日0時0分0秒UTCからの秒数(UNIX時間 1628836619
%S 秒(SS表記) 00–60
(60というのは閏秒による)
%N ナノ秒 000000000–999999999
時刻
%r 時、分、秒(12時間表記) 06:36:59 AM
%R 時、分(24時間表記) hh:mm、例えば06:36
%T 時、分、秒(24時間表記) 06:36:59
%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日1時22分に設定する場合は、以下のようなコマンドラインで実行する。

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日0時0分0秒 UTCをエポック英語版とした経過秒。
  • timeとdate英語版
  • cronは与えられた日時に稼動するスケジューリング・ジョブを処理するデーモンである。

外部リンク


「date (UNIX)」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Date_(UNIX)」の関連用語

Date_(UNIX)のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Date_(UNIX)のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのdate (UNIX) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS