mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-15 16:38:54 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@9893 c90b9560-bf6c-de11-be94-00142212c4b1
450 lines
15 KiB
Text
450 lines
15 KiB
Text
|
|
<reference id="ref.calendar">
|
|
<title>Calendar functions</title>
|
|
<titleabbrev>Calendar</titleabbrev>
|
|
|
|
<partintro>
|
|
<para>
|
|
The calendar functions are only available if you have compiled the
|
|
calendar extension in dl/calendar. Read dl/README for instructions on
|
|
using it.
|
|
</para>
|
|
<para>
|
|
The calendar extension presents a series of functions to
|
|
simplify converting between different calendar formats. The
|
|
intermediary or standard it is based on is the Julian Day Count.
|
|
The Julian Day Count is a count of days starting way earlier than
|
|
any date most people would need to track (somewhere around
|
|
4000bc). To convert between calendar systems, you must first
|
|
convert to Julian Day Count, then to the calendar system of your
|
|
choice. Julian Day Count is very different from the Julian
|
|
Calendar! For more information on calendar systems visit <ulink
|
|
url="http://genealogy.org/~scottlee/cal-overview.html">http://genealogy.org/~scottlee/cal-overview.html</ulink>.
|
|
Excerpts from this page are included in these instructions, and
|
|
are in quotes.
|
|
</partintro>
|
|
|
|
<refentry id="function.jdtogregorian">
|
|
<refnamediv>
|
|
<refname>JDToGregorian</refname>
|
|
<refpurpose>Converts Julian Day Count to Gregorian date</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>string <function>jdtogregorian</function></funcdef>
|
|
<paramdef>int <parameter>julianday</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Converts Julian Day Count to a string containing the
|
|
Gregorian date in the format of "month/day/year"
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.gregoriantojd">
|
|
<refnamediv>
|
|
<refname>GregorianToJD</refname>
|
|
<refpurpose>Converts a Gregorian date to Julian Day
|
|
Count</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>int <function>gregoriantojd</function></funcdef>
|
|
<paramdef>int <parameter>month</parameter></paramdef>
|
|
<paramdef>int <parameter>day</parameter></paramdef>
|
|
<paramdef>int <parameter>year</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Valid Range for Gregorian Calendar 4714 B.C. to 9999 A.D.
|
|
<para>
|
|
Although this software can handle dates all the way back to
|
|
4714 B.C., such use may not be meaningful. The Gregorian
|
|
calendar was not instituted until October 15, 1582 (or
|
|
October 5, 1582 in the Julian calendar). Some countries did
|
|
not accept it until much later. For example, Britain
|
|
converted in 1752, The USSR in 1918 and Greece in 1923. Most
|
|
European countries used the Julian calendar prior to the
|
|
Gregorian.
|
|
|
|
<example>
|
|
<title>Calendar functions</title>
|
|
<programlisting role=php>
|
|
<?php
|
|
$jd = GregorianToJD(10,11,1970);
|
|
echo("$jd\n");
|
|
$gregorian = JDToGregorian($jd);
|
|
echo("$gregorian\n");
|
|
?>
|
|
</programlisting>
|
|
</example>
|
|
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.jdtojulian">
|
|
<refnamediv>
|
|
<refname>JDToJulian</refname>
|
|
<refpurpose>Converts a Julian Calendar date to Julian Day
|
|
Count</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>string <function>jdtojulian</function></funcdef>
|
|
<paramdef>int <parameter>julianday</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Converts Julian Day Count to a string containing the Julian
|
|
Calendar Date in the format of "month/day/year".
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.juliantojd">
|
|
<refnamediv>
|
|
<refname>JulianToJD</refname>
|
|
<refpurpose>Converts a Julian Calendar date to Julian Day
|
|
Count</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>int <function>juliantojd</function></funcdef>
|
|
<paramdef>int <parameter>month</parameter></paramdef>
|
|
<paramdef>int <parameter>day</parameter></paramdef>
|
|
<paramdef>int <parameter>year</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Valid Range for Julian Calendar 4713 B.C. to 9999 A.D.
|
|
<para>
|
|
Although this software can handle dates all the way back to
|
|
4713 B.C., such use may not be meaningful. The calendar was
|
|
created in 46 B.C., but the details did not stabilize until
|
|
at least 8 A.D., and perhaps as late at the 4th
|
|
century. Also, the beginning of a year varied from one
|
|
culture to another - not all accepted January as the first
|
|
month.
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.jdtojewish">
|
|
<refnamediv>
|
|
<refname>JDToJewish</refname>
|
|
<refpurpose>Converts a Julian Day Count to the Jewish
|
|
Calendar</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>string <function>jdtojewish</function></funcdef>
|
|
<paramdef>int <parameter>julianday</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Converts a Julian Day Count the the Jewish Calendar.
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.jewishtojd">
|
|
<refnamediv>
|
|
<refname>JewishToJD</refname>
|
|
<refpurpose>Converts a date in the Jewish Calendar to Julian
|
|
Day Count</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>int <function>jewishtojd</function></funcdef>
|
|
<paramdef>int <parameter>month</parameter></paramdef>
|
|
<paramdef>int <parameter>day</parameter></paramdef>
|
|
<paramdef>int <parameter>year</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Valid Range Although this software can handle dates all the
|
|
way back to the year 1 (3761 B.C.), such use may not be
|
|
meaningful.
|
|
<para>
|
|
The Jewish calendar has been in use for several thousand
|
|
years, but in the early days there was no formula to
|
|
determine the start of a month. A new month was started when
|
|
the new moon was first observed.
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.jdtofrench">
|
|
<refnamediv>
|
|
<refname>JDToFrench</refname>
|
|
<refpurpose>Converts a Julian Day Count to the French
|
|
Republican Calendar</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>string <function>jdtofrench</function></funcdef>
|
|
<paramdef>int <parameter>month</parameter></paramdef>
|
|
<paramdef>int <parameter>day</parameter></paramdef>
|
|
<paramdef>int <parameter>year</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Converts a Julian Day Count to the French Republican
|
|
Calendar.
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.frenchtojd">
|
|
<refnamediv>
|
|
<refname>FrenchToJD</refname>
|
|
<refpurpose>Converts a date from the French Republican
|
|
Calendar to a Julian Day Count</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>int <function>frenchtojd</function></funcdef>
|
|
<paramdef>int <parameter>month</parameter></paramdef>
|
|
<paramdef>int <parameter>day</parameter></paramdef>
|
|
<paramdef>int <parameter>year</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Converts a date from the French Republican Calendar to a
|
|
Julian Day Count
|
|
<para>
|
|
These routines only convert dates in years 1 through 14
|
|
(Gregorian dates 22 September 1792 through 22 September
|
|
1806). This more than covers the period when the calendar was
|
|
in use.
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.jdmonthname">
|
|
<refnamediv>
|
|
<refname>JDMonthName</refname>
|
|
<refpurpose>Returns a month name</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>string <function>jdmonthname</function></funcdef>
|
|
<paramdef>int <parameter>julianday</parameter></paramdef>
|
|
<paramdef>int <parameter>mode</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Returns a string containing a month name.
|
|
<parameter>mode</parameter> tells this function which
|
|
calendar to convert the Julian Day Count to, and what type of
|
|
month names are to be returned.
|
|
|
|
|
|
<table>
|
|
<title>Calendar modes</title>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Mode</entry>
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>0</entry>
|
|
<entry>Gregorian - apreviated</entry>
|
|
</row>
|
|
<row>
|
|
<entry>1</entry>
|
|
<entry>Gregorian</entry>
|
|
</row>
|
|
<row>
|
|
<entry>2</entry>
|
|
<entry>Julian - apreviated</entry>
|
|
</row>
|
|
<row>
|
|
<entry>3</entry>
|
|
<entry>Julian</entry>
|
|
</row>
|
|
<row>
|
|
<entry>4</entry>
|
|
<entry>Jewish</entry>
|
|
</row>
|
|
<row>
|
|
<entry>5</entry>
|
|
<entry>French Republican</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.jddayofweek">
|
|
<refnamediv>
|
|
<refname>JDDayOfWeek</refname>
|
|
<refpurpose>Returns the day of the week</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>mixed <function>jddayofweek</function></funcdef>
|
|
<paramdef>int <parameter>julianday</parameter></paramdef>
|
|
<paramdef>int <parameter>mode</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Returns the day of the week. Can return a string or an int
|
|
depending on the mode.
|
|
|
|
<table>
|
|
<title>Calendar week modes</title>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Mode</entry>
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>0</entry> <entry>returns the day number as an int
|
|
(0=sunday, 1=monday, etc)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>1</entry> <entry>returns string containing the day of
|
|
week (english-gregorian)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>2</entry> <entry>returns a string containing the
|
|
abreviated day of week (english-gregorian)</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.easter-date">
|
|
<refnamediv>
|
|
<refname>easter_date</refname>
|
|
<refpurpose>get UNIX timestamp for midnight on Easter of a given year</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>int <function>easter_date</function></funcdef>
|
|
<paramdef>int <parameter>year</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Returns the UNIX timestamp corresponding to midnight on
|
|
Easter of the given year. If no year is specified, the
|
|
current year is assumed.
|
|
</para>
|
|
<para>
|
|
<emphasis>Warning:</emphasis> This function will generate
|
|
a warning if the year is outside of the range for UNIX
|
|
timestamps (i.e. before 1970 or after 2037).
|
|
<example>
|
|
<title><function>easter_date</function> example</title>
|
|
<programlisting>
|
|
echo date( "M-d-Y", easter_date(1999) ); /* "Apr-04-1999" */
|
|
echo date( "M-d-Y", easter_date(2000) ); /* "Apr-23-2000" */
|
|
echo date( "M-d-Y", easter_date(2001) ); /* "Apr-15-2001" */
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
The date of Easter Day was defined by the Council of
|
|
Nicaea in AD325 as the Sunday after the first full moon
|
|
which falls on or after the Spring Equinox. The
|
|
Equinox is assumed to always fall on 21st March, so the
|
|
calculation reduces to determining the date of the full
|
|
moon and the date of the following Sunday. The algorithm
|
|
used here was introduced around the year 532 by Dionysius
|
|
Exiguus. Under the Julian Calendar (for years before 1753)
|
|
a simple 19-year cycle is used to track the phases of the Moon.
|
|
Under the Gregorian Calendar (for years after 1753 - devised
|
|
by Clavius and Lilius, and introduced by Pope Gregory XIII
|
|
in October 1582, and into Britain and its then colonies in
|
|
September 1752) two correction factors are added to make the
|
|
cycle more accurate.
|
|
</para>
|
|
<para>
|
|
(The code is based on a C program by Simon Kershaw,
|
|
<webmaster@ely.anglican.org>)
|
|
</para>
|
|
<para>
|
|
See <function>easter_days</function> for calculating Easter
|
|
before 1970 or after 2037.
|
|
</para>
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<refentry id="function.easter-days">
|
|
<refnamediv>
|
|
<refname>easter_days</refname>
|
|
<refpurpose>get number of days after March 21 on which Easter falls for a given year</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<funcsynopsis>
|
|
<funcdef>int <function>easter_days</function></funcdef>
|
|
<paramdef>int <parameter>year</parameter></paramdef>
|
|
</funcsynopsis>
|
|
<para>
|
|
Returns the number of days after March 21 on which Easter falls
|
|
for a given year. If no year is specified, the current year is assumed.
|
|
</para>
|
|
<para>
|
|
This function can be used instead of <function>easter_date</function>
|
|
to calculate Easter for years which fall outside the range of UNIX
|
|
timestamps (i.e. before 1970 or after 2037).
|
|
<example>
|
|
<title><function>easter_date</function> example</title>
|
|
<programlisting>
|
|
echo easter_days(1999); /* 14, i.e. April 4 */
|
|
echo easter_days(1492); /* 32, i.e. April 22 */
|
|
echo easter_days(1913); /* 2, i.e. March 23 */
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
The date of Easter Day was defined by the Council of
|
|
Nicaea in AD325 as the Sunday after the first full moon
|
|
which falls on or after the Spring Equinox. The
|
|
Equinox is assumed to always fall on 21st March, so the
|
|
calculation reduces to determining the date of the full
|
|
moon and the date of the following Sunday. The algorithm
|
|
used here was introduced around the year 532 by Dionysius
|
|
Exiguus. Under the Julian Calendar (for years before 1753)
|
|
a simple 19-year cycle is used to track the phases of the Moon.
|
|
Under the Gregorian Calendar (for years after 1753 - devised
|
|
by Clavius and Lilius, and introduced by Pope Gregory XIII
|
|
in October 1582, and into Britain and its then colonies in
|
|
September 1752) two correction factors are added to make the
|
|
cycle more accurate.
|
|
</para>
|
|
<para>
|
|
(The code is based on a C program by Simon Kershaw,
|
|
<webmaster@ely.anglican.org>)
|
|
</para>
|
|
<para>
|
|
See also <function>easter_date</function>.
|
|
</para>
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
</reference>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
-->
|