こんにちは、穏やか暮らし計画ライターのあらです。
前回の記事では、for文やwhille文を使って「繰り返し」というものをやってみました。今回はこれまで習ったことを応用して、1ヶ月分のカレンダーをプログラミングで作成してみたいと思います。
この記事はシリーズもののブログ記事です。まだ#1の(プログラミング初心者が独学で1から掲示板サイトを作れるのか?【始めた理由と目標編】)から見ていない方は#1からぜひ見てみてください。
1ヶ月分のカレンダーを表示させるには
今回のカレンダーは、11/22(Sun)からの1ヶ月間の日付を作成していきます。カレンダーを作成するので、日付関数のdate関数を利用していきます。
流れとしては、
- for文で1~31までの数字を繰り返し
- date文で今日から1~31日後までの日付を月/日(曜日)に組み込む
- printで組み込んだdate文を表示させる
全体的にこのような感じになります。
早速、自分でコードを書いてみたので見ていきましょう。
表示結果は、
見切れてしまっていますが、11月23日からの1ヶ月分の日付が表示されていました。
それでは1つ1つコードの解説をしていこうと思います。
1ヶ月カレンダーコードの解説
1ヶ月カレンダー【for文編】
for文の部分は前回の記事で解説しているので、そこまで説明することがないですが、$i=1はスタート値。$i=0にすると今日を含めて31日後まで、$i=7にすると7日後から31日後までの日付、11/29~12/23まで表示されることになります。
そしてfor文の真ん中、$i<=31の部分は終わり値。$i<=365にすれば1年後までの日付を表示させることも可能です。自分は表示結果を確認しづらくなりそうなので、1ヶ月カレンダーにしました。
$i++は$i=$i+1と同じ意味のコードになります。この部分も変えることで今日から1年前までの日付、偶数分の日付だけを表示させることも可能になりまし。
このfor文がよくわからない方は前回の記事で詳しく説明しているので、そちらをご覧ください。
1ヶ月カレンダー【date編】
date関数はdate()でかっこの中に指定の英文字を入れることによって、現在の時間や日にちなど色々表示させることができるようです。
例えば、
Yというのは4桁表記の年を表すための文字になります。表示結果は2020。現在の年になったので、予想通りの結果になりました。このようにdate関数の中に自分が表示したい文字を入れれば、printで表示させることができます。
Y
:年(4桁表記)
y
:年(2桁表記)m
:月(2桁表記)
n
:月(先頭にゼロつけない)d
:日(2桁表記)H
:時間(24時間単位)
h
:時間(12時間単位)i
:分s
:秒t
:指定した月の日数w
:曜日番号(0[日曜]から6[土曜]の値).
:文字列連結\n
:改行
そして、date関数にはもう1つの使い方があります。それはタイムスタンプを指定できることです。
dateには2個目の値を変化させる変数を付け加えることができます。どういうことかと言うと、上記の画像でみるとstrtotimeで現在(Y)からちょうど1年後の日付を変数($year)に代入しています。
現在2020年の1年後は2021なので、このコードを実行してみると、ちゃんと2021という表示結果が出たのでクリアです。
これでdate、strtotimeの使い方はマスターできたので、for文と組み合わせて使ってみましょう。
for文とdate文を組み合わせてみる
こちらがfor文とdate文を組み合わせたコードになります。
date('n/j(D)')は、n(月)、j(日)、D(英文字の曜日)で表示するように指定しています。そして、strtotimeの()の中身ですが、for文で$iが1の場合は1日後、$iが2の場合は2日後....というように現在から1〜31日後まで実行されるようになっています。
私はこれに気づけるまで、結構時間がかかりました。ぐちゃぐちゃしていて、参考書を見てもstrtotimeの中身の説明はありませんでした。個人的に1番難しいところでした。
最後に
これで1ヶ月カレンダーを作成するコードは完成になります。1度わかってしまえば、とても納得できるコードなので、1年後までだったり、年だったり色々コードをいじってみたくなりました。
だんだんと複雑なコードになってきましたが、一個ずつ全てのコードの意味がわかるようになるまで、詰めていければなと思っています。
また次回の課題も頑張っていきたいと思います!
▼私が参考にしている教材
▼前回の記事 for文とwhile文で繰り返しコードを作成