Webプログラミング研究所〜初心者・中級者Webプログラマ(CGI・Perl・PHP・Javaプログラム言語)のための支援サイト〜 「Webプログラミング研究所」TOPへ 「Webプログラミング研究所」TOPへ
 
「プログラミングサンプル集」TOPへ 「プログラミングサンプル集」TOPへ
 
目次をフレームで表示 目次をフレームで表示
 

日付から曜日を取得する

 
概要
日付から曜日を取得するためには「ツェラーの公式」を使用します。
ツェラーの公式は、数学記号を使用すると次のように表されます。
 
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:土曜日
 
なお、この公式が適用できるのは、現在使用されているグレゴリオ暦が始まった1582年10月15日(金)以後となります。
それよりも前は、ユリウス暦が使用されていたため、適用できません。
 
Perl サンプルソース
$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日は、木曜日です。

TIPS
@arr_wday = ("日", "月", "火", "水", "木", "金", "土");
$str_wday2 = $arr_wday[$wday];
この2行は、Perl独特の記述方法「配列スライス」を使用して、次のように1行にまとめて記述することができます。
$str_wday2 = ("日", "月", "火", "水", "木", "金", "土")[$wday];
 
PHP サンプルソース
<?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日は、木曜日です。
 
Java サンプルソース
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日は、木曜日です。
 
NOTE
 
ご意見箱コーナー (管理者宛てメール)
このページは、あなたの参考になりましたか?

参考になった  どちらともいえない  あまり参考にならなかった

ご意見・ご感想・ご要望がありましたら、ご記入いただければ幸いです。
今後のコンテンツ作成、ページ改善等の参考にさせていただきます。

 


Webプログラマになりたい人のためのスクール・講座情報

クリエイターの皆さん!お仕事ありますよ!フェローズに!

パソコンスクールガイド
積極的な情報収集が目標実現の近道です。

就職・起業・SOHO・それとも副業? デジハリがノウハウを伝授!

就転職に強い、資格取得スキルアップ専門校ヒューマンアカデミー

CsideNet レンタルサーバー サブドメイン型 780円/月
CGI/SSI/PHP、データベース(MySQL)が利用できます。1週間の試用期間があるのがGood!!

転職・派遣・就職・アルバイトの求人情報検索支援サイト 〜 14ALL JOB SEARCH 〜
 
 
  「Webプログラミング研究所」TOPへ 「Webプログラミング研究所」TOPへ
 
「プログラミングサンプル集」TOPへ 「プログラミングサンプル集」TOPへ
 
目次をフレームフレームで表示 目次をフレームで表示

Copyright (C) 2004 - 2005 IWAMODE Project All Rights Reserved.