|
|
VI. Kalend��ov� funkce
Toto roz���en� p�edstavuje sadu funkc� ur�en�ch ke zjednodu�en� p�evod�
mezi r�zn�mi kalend��i. Prost�edn�kem nebo standardem, na kter�m je zalo�ena,
je Julian Day Count. To je po�et dn� za��naj�c� daleko p�ed jak�mkoli datem
o kter� by se v�t�ina lid� zaj�mala (n�kde kolem 4000 p�. n. l.). Pokud
chcete p�ev�d�t mezi kalend��ov�mi syst�my, mus�te nejd��v p�ev�st na
Julian Day Count, potom na k��en� kalend��. Julian Day Count se velmi li��
od Juli�nsk�ho kaled��e! Pro v�ce informac� o Julian Day Count viz
. Pro v�ce informac� o kalend��ov�ch syst�mech viz . Tyto instrukce obsahuj� v��atky
z t�to str�nky (v uvozovk�ch).
Pro pr�ci tohoto roz���en� mus�te PHP zkompilovat s volbou
--enable-calendar.
Verze PHP pro Windows
m� vestav�nou podporu pro toto roz���en�. K pou�it� t�chto funkc� nen� t�eba
na��tat ��dn� dal�� roz���en�. Toto roz���en� nem� definov�no ��dn� konfigura�n�
direktivy. Toto roz���en� nem� definov�n ��dn� typ prost�edku
(resource).
Tyto konstanty jsou definov�ny t�mto roz���en�m a budou k dispozici pouze
tehdy, bylo-li roz���en� zkompilov�no spole�n� s PHP nebo dynamicky zavedeno
za b�hu.
The following constants are available since PHP 4.3.0 :
The following constants are available since PHP 5.0.0 :
- CAL_JEWISH_ADD_ALAFIM_GERESH
(integer)
- CAL_JEWISH_ADD_ALAFIM
(integer)
- CAL_JEWISH_ADD_GERESHAYIM
(integer)
- Obsah
- cal_days_in_month -- Return the number of days in a month for a given year and calendar
- cal_from_jd -- Converts from Julian Day Count to a supported calendar
- cal_info -- Returns information about a particular calendar
- cal_to_jd -- Converts from a supported calendar to Julian Day Count
- easter_date -- Zjistit UNIXov� timestamp Velikono�n� p�lnoci v dan�m roce
- easter_days --
Get number of days after March 21 on which Easter falls for a
given year
- FrenchToJD --
P�ev�st datum z Francouzsk�ho republik�nsk�ho kalend��e na Julian
Day Count
- GregorianToJD -- P�ev�st Gregori�nsk� datum na Julian Day Count
- JDDayOfWeek -- Vr�tit den v t�dnu
- JDMonthName -- Vr�tit n�zev m�s�ce
- JDToFrench --
P�ev�st Julian Day Count na Francouzsk� republik�nsk� kalend��
- JDToGregorian -- P�ev�st Julian Day Count na Gregori�nsk� datum
- JDToJewish --
P�ev�st Julian Day Count na idovsk� kalend��
- JDToJulian --
P�ev�st Julian Day Count na Juli�nsk� datum
- jdtounix -- P�ev�st Julian Day Count na UNIXov� timestamp
- JewishToJD --
P�ev�st datum podle idovsk�ho kalend��e na Julian Day Count
- JulianToJD --
P�ev�st Juli�nsk� datum na Julian Day Count
- unixtojd -- P�ev�st UNIXov� timestamp na Julian Day Count
add a note
User Contributed Notes
Kalend��ov� funkce
wasiq911 at hotmail dot com
23-Jun-2004 08:55
sup people!! I made this dynamic calendar for my site and thought I would share it with everybody. It's completely automatic so there's no need to modify anything...except maybe add your own styles of course!
Hope this code helps somebody:
<html>
<body>
<?php
$t_days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y"));
$day = date("w", mktime(0, 0, 0, date("m"), 1, date("Y")));
?>
<table border = "1">
<tr><th bgcolor = "yellow" colspan = "7"><?php echo date("F Y"); ?></th></tr>
<tr><th>Sun</th><th>Mon</th><th>Tue</th>
<th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr>
<?php
for ($i = 0; $i <= $t_days; $i++)
{
if ($day > 6) {
echo "</tr>\n<tr>\n";
$day = 0; }
if ($i == date("j")) {?>
<td align = "center"><b><?php echo $i; $day++; echo "</b></td>\n"; }
else if ($i > 0) {?>
<td align = "center"><?php echo $i; $day++; echo "</td>\n"; }
else if ($day > 0) {?>
<tr><td colspan = "<?php echo $day; ?>"><?php echo "</td>\n"; }
if ($i == $t_days && $day < 6) {?>
<td colspan = "<?php echo 7 - $day; ?>"><?php echo "</td>\n</tr>\n"; }
}?>
</table>
</body>
</html>
The above code creates a small and simple calendar table which highlights the current day in bold. I also took the time to make the source code well formatted.
pouya
03-Apr-2004 06:39
There is an implementation of the Persian calendar at www.farsiweb.info.
amichauer at NOSPAM dot gmx dot de
06-Dec-2003 01:07
Where is CAL_HIJRI?
# Julian Day Count To Hijri
function JDToHijri($jd)
{
$jd = $jd - 1948440 + 10632;
$n = (int)(($jd - 1) / 10631);
$jd = $jd - 10631 * $n + 354;
$j = ((int)((10985 - $jd) / 5316)) *
((int)(50 * $jd / 17719)) +
((int)($jd / 5670)) *
((int)(43 * $jd / 15238));
$jd = $jd - ((int)((30 - $j) / 15)) *
((int)((17719 * $j) / 50)) -
((int)($j / 16)) *
((int)((15238 * $j) / 43)) + 29;
$m = (int)(24 * $jd / 709);
$d = $jd - (int)(709 * $m / 24);
$y = 30*$n + $j - 30;
return array($d, $m, $y);
}
# Hijri To Julian Day Count
function HijriToJD($d, $m, $y)
{
return (int)((11 * $y + 3) / 30) +
354 * $y + 30 * $m -
(int)(($m - 1) / 2) + $d + 1948440 - 385;
}
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){
$jde_year_prefix = substr($year, 0, 1) - 1;
$jde_year_suffix = substr($year, -2);
$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);?>
--
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.
| |