Oct 17, 2008
GNU date コマンドで来月の日付を取得する方法をメモ
GNU date コマンドで来月の日付を取得する方法をメモしておく。 使用した GNU date コマンドのバージョンは以下の通り。
$ date --version date (coreutils) 5.2.1 Written by David MacKenzie. Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [参考訳] これはフリーソフトウェアです. コピーの条件についてはソースをお読みください. 市場性及び特定目的適合性の如何によらず, いかなる保証もありません.
年
1 年後、1 年前などの日付を取得するには "year" もしくは "years" が使用できる。
$ date +"%Y%m%d" --date "1 year" 20091017 $ date +"%Y%m%d" --date "1 years" 20091017 $ date +"%Y%m%d" --date "10 years" 20181017 $ date +"%Y%m%d" --date "1 year ago" 20071017 $ date +"%Y%m%d" --date "1 years ago" 20071017 $ date +"%Y%m%d" --date "10 years ago" 19981017
月
1 ヶ月後、1 ヶ月前などの日付を取得するには "month" もしくは "months" が使用できる。
$ date +"%Y%m%d" --date "1 month" 20081117 $ date +"%Y%m%d" --date "1 months" 20081117 $ date +"%Y%m%d" --date "10 month" 20090817 $ date +"%Y%m%d" --date "1 month ago" 20080917 $ date +"%Y%m%d" --date "1 months ago" 20080917 $ date +"%Y%m%d" --date "10 month ago" 20071217
週
1 週間後、1 週間前などの日付を取得するには "week" もしくは "weeks" が使用できる。
$ date +"%Y%m%d" --date "1 week" 20081024 $ date +"%Y%m%d" --date "1 weeks" 20081024 $ date +"%Y%m%d" --date "10 weeks" 20081226 $ date +"%Y%m%d" --date "1 week ago" 20081010 $ date +"%Y%m%d" --date "1 weeks ago" 20081010 $ date +"%Y%m%d" --date "10 weeks ago" 20080808
日
1 日後、1 日前などの日付を取得するには "day" もしくは "days" が使用できる。
$ date +"%Y%m%d" --date "1 day" 20081018 $ date +"%Y%m%d" --date "1 days" 20081018 $ date +"%Y%m%d" --date "200 days" 20090505 $ date +"%Y%m%d" --date "1 day ago" 20081016 $ date +"%Y%m%d" --date "1 days ago" 20081016 $ date +"%Y%m%d" --date "300 days ago" 20071222
その他(時間、分、秒)
時間であれば "hour", "hours"、分であれば "minute", "minutes"、秒であれば "second", "seconds" で上記と同様のことができる。
`man date` より関連部分を抜粋
date(1)
名前
date - システムの日付と時刻を表示・設定する
書式
date [-uR] [-d datestr] [-f datefile] [-r file] [-s datestr] [-I
[timespec]] [--date=datestr] [--file=datefile] [--iso-8601[=timespec]]
[--reference=file] [--set=datestr] [--rfc-822] [--universal] [--utc]
[+format] [MMDDhhmm[[CC]YY][.ss]]
date [--help] [--version]
(略)
時刻フィールド
%H 時 (00..23)
%I 時 (01..12)
%k 時 (0..23)
%l 時 (1..12)
%M 分 (00..59)
%p AM あるいは PM のロケール
%r 時刻、12 時間 (hh:mm:ss [AP]M)
%s 1970-01-01 00:00:00 UTC からの秒数 (標準外の拡張)
%S 秒 (00..60)
%T 時刻、24 時間 (hh:mm:ss)
%X ロケールによる時刻の表現 (%H:%M:%S)
%Z タイムゾーン (例 EDT)、あるいはタイムゾーンが決定できないならば
無し
日付フィールド
%a ロケールの省略形の曜日名 (Sun..Sat)
%A ロケールの完全表記の曜日名、可変長 (Sunday..Saturday)
%b ロケールの省略形の月名 (Jan..Dec)
%B ロケールの完全表記の月名、可変長 (January..December)
%c ロケールの日付と時刻 (Sat Nov 04 12:02:33 EST 1989)
%d 月内通算日数 (01..31)
%D 日付 (mm/dd/yy)
%h %b と同じ
%j 年内通算日数 (001..366)
%m 月 (01..12)
%U 日曜日を週の最初の日とした年内通算週 (00..53)
%w 週のうちの曜日 (0..6) (0 が日曜日)
%W 月曜日を週の最初の日とした年内通算週 (00..53)
%x ロケールの日付表現 (mm/dd/yy)
%y 年の最後の 2 つの数字 (00..99)
%Y 年 (1970...)
(略)
-d datestr, --date datestr
現在の時刻・日付の代わりに、 datestr で指定された時刻・日付を表
示する。 datestr は普通のフォーマットならだいたいなんでも使うこ
とができる。月名、タイムゾーン、‘am’ や ‘pm’ なども用いてよい。
(略)
例
一昨日の日付を表示するには:
date --date ´2 days ago´
3 ヶ月と 1 日後の日付を表示するには:
date --date ´3 months 1 day´
今年のクリスマスが年の初めから何日目かを表示するには:
date --date ´25 Dec´ +%j
(略)
TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Linux/20081017_01.trackback
writeback message: Ready to post a comment.
