今月が何日まであるか
今月が何日まであるかを表示する - 素人がプログラミングを勉強するブログにインスパイヤされて、今月が何日まであるかを表示してみます。
基本的に gawk の機能を用いていますが、上記 URL の手法とは異なります。
#! /usr/local/bin/gawk -f
# days_of_this_month.awk
# 今月が何日まであるか表示する
# usage: gawk -f days_of_this_month.awk
BEGIN {
year = strftime("%Y") + 0;
month = strftime("%m") + 0;
split("31 28 31 30 31 30 31 31 30 31 30 31", month_length);
if (is_leap(year) && month == 2) {
print month " 月は " month_length[month] + 1 " 日まで。";
} else {
print month " 月は " month_length[month] " 日まで。";
}
}
# is_leap(): 閏年かどうかの判定
# in: 年 (year)
# out: 閏年なら 1、そうでなければ 0 を返す
function is_leap(year) {
if ((year % 4) == 0 && (year % 100) != 0 || (year % 400) == 0) {
return 1;
} else {
return 0;
}
}
実行してみます。
$ date Mon Aug 31 22:42:09 JST 2009 $ gawk -f days_of_this_month.awk 8 月は 31 日まで。
上述の URL と同じ手法で gawk を使うと以下のようになります。
#! /usr/local/bin/gawk -f
# days_of_this_month_2.awk
# 今月が何日まであるか表示する
# usage: gawk -f days_of_this_month_2.awk
BEGIN {
year = strftime("%Y") + 0;
month = strftime("%m") + 0;
print strftime("%d", mktime(year " " month + 1 " 1 0 0 0") - 60 * 60 * 24);
}
実行結果も同じです。
$ date Mon Aug 31 22:49:10 JST 2009 $ gawk -f days_of_this_month_2.awk 31
後者の方は次の月の 1 日から 1 日分を引いて計算しています。


