ポンクソフト

年月を指定できるカレンダー - PHPで日付・時刻の計算

前ページ PHPで日付・時刻の計算 TOP 次ページ

目次

  1. PHPで日付・時刻の計算
  2. 日付・時刻に関する関数
  3. 年齢計算
  4. 今月のカレンダー
  5. 年月を指定できるカレンダー
  6. 予定表
  7. 予定表(単一ソース)

年月を指定できるカレンダーを表示する

今月だけではなく、年月を設定して表示できるカレンダーを作成します。

プログラムの作成

以下のソースを入力してください。
<?php
$now = time();
$year = date("Y", $now);
$month = date("n", $now);
$day = date("j", $now);
if ($_POST['year']) {
  if ($year != $_POST['year'] || $month != $_POST['month']) {
    $year = $_POST['year'];
    $month = $_POST['month'];
    $day = 0;
    $now = mktime(0, 0, 0, $month, 1, $year);
  }
}
$dnum = date("t", $now);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>カレンダー</title>
</head>
<body>
<form method="post" action="calendar2.php">
<select name="year" onChange="submit()">
<?php
for ($i = $year - 5; $i <= $year + 5; $i++) {
  print "<option";
  if ($i == $year) print " selected";
  print ">$i</option>\n";
}
?>
</select>年
<select name="month" onChange="submit()">
<?php
for ($i = 1; $i <= 12; $i++) {
  print "<option";
  if ($i == $month) print " selected";
  print ">$i</option>\n";
}
?>
</select>月
</form>
<?php
$wstr = array('日', '月', '火', '水', '木', '金', '土');
for ($i = 1; $i <= $dnum; $i++) {
  $t = mktime(0, 0, 0, $month, $i, $year);
  $w = date("w", $t);
  if ($i == $day) print "<strong>";
  if ($w == 0) print "<font color='red'>";
  print date("Y年m月d日", $t);
  print "(" . $wstr[$w] . ")";
  if ($w == 0) print "</font>";
  if ($i == $day) print "</strong>";
  print "<br>\n";
}
?>
</body>
</html>
入力が終わったら「calendar2.php」という名前でサーバにアップし、ブラウザで閲覧してください。

ソースの解説

$now = time();
$year = date("Y", $now);
$month = date("n", $now);
$day = date("j", $now);
まず $now に現在日時、$year に現在年、$month に現在月、$day に現在日を格納します。
if ($_POST['year']) {
フォーム変数 year が設定されている、つまり年か月を切り替えた場合に以下の処理を行ないます。
if ($year != $_POST['year'] || $month != $_POST['month']) {
フォームで指定した年月が現在年月を指していない場合、以下の処理を行ないます。
$year = $_POST['year'];
$month = $_POST['month'];
$year と $month をフォームで指定した年月に入れ替えます。
$day = 0;
$day に 0 という無い日を指定することによって、日付を出力しているところで、本日を強調文字にするという処理をスキップさせています。
$now = mktime(0, 0, 0, $month, 1, $year);
$now をフォームで指定した年月の1日の0時0分0秒のタイムスタンプに入れ替えています。
$dnum = date("t", $now);
$dnum には月の日数が入ります。
<form method="post" action="calendar2.php">
フォームが submit されると、自分自身に飛ぶように設定しています。
<select name="year" onChange="submit()">
JavaScript により、年が変更された瞬間に submit されるようにしています。
for ($i = $year - 5; $i <= $year + 5; $i++) {
  print "<option";
  if ($i == $year) print " selected";
  print ">$i</option>\n";
}
カレンダーに表示されている年 ($year) の前後5年をプルダウンメニューに設定するようにしています。カレンダーに表示されている年の項目には「selected」の文字を追加して、初期状態で選択されるようにします。
<select name="month" onChange="submit()">
JavaScript により、月が変更された瞬間に submit されるようにしています。
for ($i = 1; $i <= 12; $i++) {
  print "<option";
  if ($i == $month) print " selected";
  print ">$i</option>\n";
}
月の数値である1~12を出力しています。カレンダーに表示されている月の項目には「selected」の文字を追加して、初期状態で選択されるようにします。
前ページ PHPで日付・時刻の計算 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:


wentgt
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/25 00:08

初心者
メールソフトの設定ってどうやるのですか...
gmailに送りたいのですが...
2017/01/24 21:33

enveloptf
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 21:23

paywinlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 18:04

anklebitcw
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 11:35

butterfxa
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 03:37

nhadeptronmr
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 20:39

nhadeptronlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 15:24

sinforve
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 12:46

calltrackju
すべての
cbbnews24.com
csgobooms.com
csgojoybets.com
incareersjobs.com
stcmidtenn.org
thewill.in
sakirkaratas.com
apexturnkey.in
medray.in
applevalleymarket.com
b8b90.com
danhhotgay.com
cstopstake.com
nsm.org.in
vov-fc.com
csgohugepots.com
eaglesapparelshop.com
mymobileappmobiappssub2016.com
sbppl.org
gracedental.in
kehulin.com
cheappricetoyou2015.com
vamortgageloantexas.com
doitacdoanhnghiep.com
techimanage.com
elmi.co
upea.in
esncordoba.org
goal888cash.com
fullebookz.com
2winde222.com
投稿者
2017/01/23 09:37

残りを読む »