|
日付から曜日を取得するためには「ツェラーの公式」を使用します。 ツェラーの公式は、数学記号を使用すると次のように表されます。
y年m月d日の曜日は、
(y + [y/4] - [y/100] + [y/400] + [(13*m + 8)/5] + d) % 7 ただし、 1月または2月の場合は、それぞれ前年の13月、14月として代入しなければなりません。 つまり、(y-1)年(m+12)月となります。 (例)2004年1月1日の場合、2003年13月1日と考えて上記の式に代入します。 [N] はNを超えない最大の整数とします(ガウス記号)。→ (例) [2.3] = 2 a % b の は、aをbで割った余りとなります。 この式から得られる値は数値であり、それぞれ次の曜日に対応します。 0:日曜日、1:月曜日、2:火曜日、3:水曜日、4:木曜日、5:金曜日、6:土曜日 それよりも前は、ユリウス暦が使用されていたため、適用できません。 |
|
|
$wday
= &date2wday(2004, 1,
1);
@arr_wday = ("日", "月", "火", "水", "木", "金", "土"); $str_wday2 = $arr_wday[$wday]; print "2004年1月1日は、" . $str_wday2 . "曜日です。"; # 日付から曜日を判定する関数 sub date2wday { my($year, $month, $mday) = @_; if($month == 1 || $month == 2) { $year--; $month += 12; } my $wday = ($year + int($year/4) - int($year/100) + int($year/400) + int((13*$month+8)/5) + $mday) % 7; return $wday; }
2004年1月1日は、木曜日です。
@arr_wday
= ("日", "月",
"火", "水",
"木", "金",
"土");
この2行は、Perl独特の記述方法「配列スライス」を使用して、次のように1行にまとめて記述することができます。$str_wday2 = $arr_wday[$wday];
$str_wday2
= ("日", "月",
"火", "水",
"木", "金",
"土")[$wday];
|
|
|
<?php
$wday = date2wday(2004, 1, 1); $arr_wday = array("日", "月", "火", "水", "木", "金", "土"); $str_wday2 = $arr_wday[$wday]; print "2004年1月1日は、" . $str_wday2 . "曜日です。"; //日付から曜日を判定する関数 function date2wday($year, $month, $mday) { if($month == 1 || $month == 2) { $year--; $month += 12; } $wday = ($year + intval($year/4) - intval($year/100) + intval($year/400) + intval((13*$month+8)/5) + $mday) % 7; return $wday; } ?>
2004年1月1日は、木曜日です。
|
|
|
public
class Date2Wday {
public static void main(String[] args) { int wday = date2wday(2004, 1, 1); String[] arrWday = {"日", "月", "火", "水", "木", "金", "土"}; String strWday = arrWday[wday]; System.out.println("2004年1月1日は、" + strWday + "曜日です。"); } //日付から曜日を判定する関数 public static int date2wday(int year, int month, int mday) { if(month == 1 || month == 2) { year--; month += 12; } int wday = (year + (int)(year/4) - (int)(year/100) + (int)(year/400) + (int)((13*month+8)/5) + mday) % 7; return wday; } }
2004年1月1日は、木曜日です。
|
|
|
| ご意見箱コーナー (管理者宛てメール) |
|
このページは、あなたの参考になりましたか? |