PHP: カレンダー関数 - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<bzwritecal_days_in_month>
view the version of this page
Last updated: Tue, 21 Dec 2004

VII. カレンダー関数

導入

カレンダー関数は、異なったカレンダーフォーマット間の変換を 簡単に行う関数の集まりです。標準としているのは、ユリウス積算日です。 ユリウス積算日は、紀元前4713年1月1日から数え始めわれています。 カレンダーシステム間の変換を行うには、ユリウス積算日に変換した後 に選択したカレンダーシステムに変換しなければなりません。 ユリウス積算日はユリウス暦とは全く違います! ユリウス積算日の詳細を知りたい場合は、 を参照下 さい。カレンダーシステムに関する情報を知りたい場合は、 を参照下さい。 本説明にはこのページからの引用が含まれています。 このページの内容はこのチュートリアルにも反映/引用されています。

インストール手順

このモジュールの関数を動作させるには、 --enable-calendarを指定して PHPをコンパイルする必要があります。

実行用の設定

この拡張モジュールは設定ディレクティブを全く定義しません。

リソース型

この拡張モジュールはリソース型を全く定義しません。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

CAL_GREGORIAN (integer)

CAL_JULIAN (integer)

CAL_JEWISH (integer)

CAL_FRENCH (integer)

CAL_NUM_CALS (integer)

CAL_DOW_DAYNO (integer)

CAL_DOW_SHORT (integer)

CAL_DOW_LONG (integer)

CAL_MONTH_GREGORIAN_SHORT (integer)

CAL_MONTH_GREGORIAN_LONG (integer)

CAL_MONTH_JULIAN_SHORT (integer)

CAL_MONTH_JULIAN_LONG (integer)

CAL_MONTH_JEWISH (integer)

CAL_MONTH_FRENCH (integer)

以下の定数は、PHP 4.3.0以降で使用可能です。

CAL_EASTER_DEFAULT (integer)

CAL_EASTER_ROMAN (integer)

CAL_EASTER_ALWAYS_GREGORIAN (integer)

CAL_EASTER_ALWAYS_JULIAN (integer)

目次
cal_days_in_month --  指定した年とカレンダについて日数を返す calendar
cal_from_jd --  ユリウス積算日からサポートされるカレンダに変換し、拡張情報を返す
cal_info -- 特定のカレンダに関する情報を返す
cal_to_jd --  サポートされるカレンダからユリウス積算日に変換する
easter_date --  指定した年における復活祭の真夜中のUNIX時を得る
easter_days --  指定した年において3月21日以降、復活祭までの日数を得る
FrenchToJD --  フランス革命暦をユリウス積算日に変換する
GregorianToJD --  グレゴリウス日をユリウス積算日に変換する
JDDayOfWeek -- 曜日を返す
JDMonthName -- 月の名前を返す
JDToFrench --  ユリウス積算日をフランス革命暦(共和暦)に変換する
JDToGregorian -- ユリウス積算日をグレゴリウス日に変換する
JDToJewish --  ユリウス積算日をユダヤ暦に変換する
JDToJulian --  ユリウス積算日をユリウス暦に変換する
jdtounix -- ユリウス歴をUNIXタイムスタンプに変換する
JewishToJD --  ユダヤ暦の日付けをユリウス積算日に変換する
JulianToJD --  ユリウス暦をユリウス積算日に変換する
unixtojd -- UNIXタイムスタンプをユリウス歴に変換する


add a note add a note User Contributed Notes
カレンダー関数
pouya
03-Apr-2004 06:39
There is an implementation of the Persian calendar at www.farsiweb.info.
jthome at fcgov dot com
02-Oct-2003 06:38
Had a similar problem as curlee, except I needed to create a JDE_ERP date.  [format is CYYDDD]

<?php

function jde_date_create($month, $day, $year){
  
/*
   *  NOTE: $month and $day CANNOT have leading zeroes,
   *        $year must be'YYYY' format
   */
  
$jde_year_prefix = substr($year, 0, 1) - 1;
  
$jde_year_suffix = substr($year, -2);
  
  
//note that valid years for mktime are 1902-2037
  
$timestamp = mktime(0,0,0,$month, $day, $year);
  
$baseline_timestamp = mktime(0,0,0,1,0,$year);
  
  
$day_count = round(($timestamp - $baseline_timestamp)/86400);
  
$day_count_padded = str_pad($day_count,3,"0",STR_PAD_LEFT);

   return (
$jde_year_prefix . $jde_year_suffix . $day_count_padded);
  
}

echo
jde_date_create(6,25,2000);// will return '103176'

?>

--
Jim
curlee at mindspring dot com
29-Aug-2003 03:55
I solved a problem with Julian dates that are used in the JD Edwards ERP package (running on AS/400).  The Julian format for this system is as follows:  CYYDDD

Where C is 0 for 1900 and 1 for 2000
DDD is the day of the year count

I used the mktime built-in php function to convert dates to the normal DD/MM/YYYY format.  This function will convert dates that are between 1970 and 2038 (limitation of unix timestamps and the mktime function)

The $jde_date var needs to be a 6 len STRING.... if you use a numeric var type it will drop the leading 0 for any date that represents 1900.... this will botch the substr functions and thus make the whole thing wrong. 

function jde_date_conv($jde_date)
{

$ct = substr($jde_date,0,1);
$yr = substr($jde_date,1,2);
$dy = substr($jde_date,3,3);

if($ct == 0) $yr_pfx = 19;
if($ct == 1) $yr_pfx = 20;

$tlt_yr = $yr_pfx.$yr;

$base_time = mktime(0,0,0,1,0,$tlt_yr);

$unix_time = ($dy * 86400) + $base_time;

return date("m/d/Y" , $unix_time);
}
carlj at vibez dot ca
17-Jun-2003 07:28
Why not do something like this, to find the number of days in a month?

$monthNum = date("n"); // or any value from 1-12
$year        = date("Y"); // or any value >= 1
$numDays  = date("t",mktime(0,0,0,$monthNum,1,$year))

This will tell you if there is 28-31 days in a month
dy64 at dy64 dot de
12-Nov-2002 02:18
Best performance:
/*
 * Find the number of days in a month
 * Year is between 1 and 32767 inclusive
 * Month is between 1 and 12 inclusive
 */
function DayInMonth($month, $year) {
   var $daysInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   if ($month != 2) return $daysInMonth[$month - 1];
   return (checkdate($month, 29, $year)) ? 29 : 28;
}
gaoweibin at 163 dot net
26-Aug-2002 09:26
This is a Chinese Lunar Calendar, including SolarTerm, TianGan, DiZhi, DiesFaustus and Holidays.

kmcm at bigfoot dot com
21-Jan-2002 02:42
if, like me, you don't have a PHP build that includes the cal functions, you may want to use this function for sorting out leap year.

function days_in_feb($year){

   //$year must be YYYY
   //[gregorian] leap year math :
  
   if ($year < 0) $year++;
   $year += 4800;

   if ( ($year % 4) == 0) {
       if (($year % 100) == 0) {
           if (($year % 400) == 0) {
               return(29);
           } else {
               return(28);
           }
       } else {
           return(29);
       }
   } else {
       return(28);
   }
}

of course the next leap year isn't until the end of the century but this makes for timeless code I guess ...or if you are using 2000 in your dates or are going far back in time, etc, it is necessary.
mikebabcock at pobox dot com
17-Jul-2000 04:20
There are two world calculations for the date of Easter.  The Easter date function should account for this; one used (generally) by the Western world and one (generally) used by the Eastern (the official date used by the East Orthodox Church).
ssharma at odc dot net
31-Jan-2000 11:36
If you're interested in dates/calendars, check out the MCAL stuff.

<bzwritecal_days_in_month>
 Last updated: Tue, 21 Dec 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Mon Mar 14 08:13:06 2005 Local time zone must be set--see zic manual page