
こんにちは。よっしーです(^^)
今日は date コマンドのご紹介です。
先日、とある日付が何週目なのかを調べる必要があり、dateコマンドを使用しましたので、dateコマンドについてシェアします。
実行環境
この記事で使用されているコマンドは下記の環境で実行されています。
% sw_vers
ProductName: macOS
ProductVersion: 13.2.1
BuildVersion: 22D68
% sysctl machdep.cpu.brand_string
machdep.cpu.brand_string: Apple M1 Max
% man date | tail -5
A date command appeared in Version 1 AT&T UNIX.
The -I flag was added in FreeBSD 12.0.
macOS 13.2 August 25, 2020 macOS 13.2
date コマンドとは
date コマンドは、macOSやLinuxシステム上で現在の日付と時刻を表示したり、設定したりするために使用されるコマンドです。 date コマンドを実行すると、現在の日付と時刻が表示されます。
以下は、 date コマンドの基本的な使用方法のいくつかの例です。
- 現在の日付と時刻を表示する。
% date
Sun Mar 26 13:29:24 JST 2023
- 日付と時刻を特定のフォーマットで表示する。
% date +"%Y-%m-%d %H:%M:%S"
2023-03-26 18:23:30
- 日付と時刻を設定する。
% sudo date 032620232021
- タイムゾーンを変更する。
% sudo systemsetup -settimezone Asia/Tokyo
これらのコマンドは、ターミナルから実行されます。date コマンドを実行する前に、必要に応じて sudo コマンドを使用して管理者権限を取得する必要があることに注意してください。また、sudo systemsetup -settimezone コマンドを使用する場合は、変更するタイムゾーンに応じて Asia/Tokyo の部分を変更する必要があります。
date コマンドの使用例
下記がdateコマンドを使用した例になります。
指定の日時を指定のフォーマットで表示
下記のコマンドは、指定されたフォーマットに基づいて "2023-03-26 18:23:30" の文字列を解析し、%A, %B %d, %Y というフォーマットで日付を表示します。出力は「Saturday, March 26, 2023」となります。
% date -j -f "%Y-%m-%d %H:%M:%S" "2023-03-26 18:23:30" +"%A, %B %d, %Y"
Sunday, March 26, 2023
-j オプションは、日付と時刻を設定しないようになるため、システム時刻を変更したくない場合にしようされます。
-f オプションは、指定されたフォーマットに基づいて日付と時刻を解析するために使用されます。つまり、与えられたテキストから日付と時刻を抽出することができます。さまざまな形式の日付と時刻を解析および表示することができます。
-f オプションで使用できる代表的なフォーマットの一覧です。
%a: 短い曜日名 (例: Sun)%A: 完全な曜日名 (例: Sunday)%b: 短い月名 (例: Jan)%B: 完全な月名 (例: January)%c: 日付と時刻を表示する (例: Sun Jan 01 12:00:00 2006)%C: 年を100で除算した値 (例: 20)%d: 日 (01-31)%D: 日付を表示する (例: 01/01/06)%e: 日 (1-31)%F: 日付を表示する (例: 2006-01-01)%H: 時間 (00-23)%I: 時間 (01-12)%j: 年の通算日数 (001-366)%m: 月 (01-12)%M: 分 (00-59)%n: 改行文字%p: AMまたはPMを表示する%r: 12時間制の時刻 (hh:mm:ss AM/PM)%R: 24時間制の時刻 (hh:mm)%S: 秒 (00-60)%t: タブ文字%T: 24時間制の時刻 (hh:mm:ss)%u: 曜日を数値で表示する (1-7)%U: 年の通算週数 (00-53)。日曜日を週の初めとする。%V: 年の通算週数 (01-53)。ISO 8601準拠。週の初めは、週の大部分が含まれる年の最初の週とする。%w: 曜日を数値で表示する (0-6)。日曜日を0とする。%W: 年の通算週数 (00-53)。月曜日を週の初めとする。%x: 地域に応じた日付表現を表示する (例: 01/01/06)%X: 地域に応じた時刻表現を表示する (例: 12:00:00)%y: 年 (00-99)%Y: 年 (例: 2006)%z: タイムゾーンオフセット (例: -0700)%Z: タイムゾーン名 (例: MST)
日時の計算
date コマンドの -v オプションは、日付や時刻を指定した時間分前や後に変更するために使用されます。このオプションを使用することで、特定の日付や時刻に対して簡単に相対的な変更を加えることができます。
以下は、date コマンドの -v オプションを使用するいくつかの例です。
- 現在の日付から5日後の日付を表示する。
% date -v+5d
Fri Mar 31 14:29:51 JST 2023
- 現在の時刻から2時間後の時刻を表示する。
% date -v+2H
Sun Mar 26 16:31:17 JST 2023
- 特定の日付から1週間前の日付を表示する。
% date -v-1w -j -f "%Y%m%d" 20220101 +%Y-%m-%d
2021-12-25
+ 記号を使用すると、指定した単位分後の日付や時刻を表示し、- 記号を使用すると、指定した単位分前の日付や時刻を表示します。
月末の日を表示する
下記のコマンドで現在の月の最後の日を表示します。
% date -v1d -v+1m -v-1d +%Y-%m-%d
2023-03-31
下記のコマンドで任意の月の最後の日を表示します。20230204の部分を任意の日付にするとその月の最後の日が表示されます。
% date -v1d -v+1m -v-1d -j -f "%Y%m%d" 20230204 +%Y-%m-%d
2023-02-28
おわりに
今日はdateコマンドについてご紹介しました。
日付に関する処理はたまにすることがあるので、覚えておくと便利だと思います。特に、任意の日付を指定するオプションは覚えておくと有用に使用できると思います。

また明日お会いしましょう!


コメント