Erster Montag im Jahr finden
function firstkw($jahr) {
$erster = mktime(0,0,0,1,1,$jahr);
$wtag = date('w',$erster);
if ($wtag<= 4) {
/**
* Donnerstag oder kleiner: auf den Montag zurückrechnen.
*/
$montag = mktime(0,0,0,1,1-($wtag-1),$jahr);
} else {
/**
* auf den Montag nach vorne rechnen.
*/
$montag = mktime(0,0,0,1,1+(7-$wtag+1),$jahr);
}
return $montag;
}
# Beispiel Aufrufe
$montag = firstkw(date('Y'));
$montag = firstkw(2012);
echo date("d.m.Y",$montag); // 02.01.2012
$montag = firstkw(2011);
echo date("d.m.Y",$montag); // 03.01.2011
$montag = firstkw(2010);
echo date("d.m.Y",$montag); // 04.01.2010
$montag = firstkw(1999);
echo date("d.m.Y",$montag); // 04.01.1999
Montag in Kalenderwoche finden
function mondaykw($kw,$jahr) {
$firstmonday = firstkw($jahr);
$m_monat = date('m',$firstmonday);
$m_jahr = date('Y',$firstmonday);
$m_tage = date('d',$firstmonday);
$tage =($kw-1)*7;
$mondaykw = mktime(0,0,0,$m_monat,$m_tage+$tage,$m_jahr);
return $mondaykw;
}
# Beispiel Aufrufe
$montag = mondaykw(date('W'),date('Y'));
$montag = mondaykw(25,1999);
echo date("d.m.Y",$montag); // 21.06.1999
$montag = mondaykw(41,2011);
echo date("d.m.Y",$montag); // 10.10.2011
Datum von Tag im Jahr finden
function dayofyear2date( $tDay, $tYear = 0, $tFormat = 'd-m-Y') {
$offset = intval($tDay) * 86400;
$year = ($tYear > 0) ? $tYear : date('Y');
$date = mktime( 0, 0, 0, 1, 1, $year )+$offset;
return date( $tFormat, $date );
}
# Beispiel Aufrufe
$heute = dayofyear2date(date('z'),date('Y'));
$datum = dayofyear2date(200,2000);
echo $datum; // 19-07-2000
$datum = dayofyear2date(date('z'));
echo $datum; // ... heute, weil date('Y')
$datum = dayofyear2date(150,2012,'d.m.Y');
echo $datum; // 30.05.2012
Anzahl Tage im Jahr
$days_of_year = date("z",mktime(0, 0, 0, 12, 31, date('Y')));
for($d=0;$d<=$days_of_year;$d++) {
$date = dayofyear2date($d,date('Y'));
$dtime = strtotime($date);
// ....
}
# Beispiel Aufrufe
// anzahl im aktuellen jahr
echo date("z",mktime(0, 0, 0, 12, 31, date('Y')))+1;
// 366, weil es mit 0 beginnt hätte PHP nur 365
echo date("z",mktime(0, 0, 0, 12, 31, 2000))+1;
// 365
echo = date("z",mktime(0, 0, 0, 12, 31, 2013))+1;
// 364, weil PHP mit 0 beginnt
echo date("z",mktime(0, 0, 0, 12, 31, 1955));
// mehr infos zum Jahr : http://de.wikipedia.org/wiki/Jahr
Montag statt Monday ausgeben ( Wochentag auf Deutsch )
// Setzt die zu verwendende Standardzeitzone. Verfügbar seit PHP 5.1
date_default_timezone_set('UTC');
// Weil nach UTF-8 Sprachpakete gesucht wird ...
ini_set('default_charset', 'UTF-8');
// Works on Ubuntu 8.04 Server
$loc_de = setlocale(LC_TIME, 'de_DE.UTF8', 'de.UTF8', 'de_DE.UTF-8', 'de.UTF-8');
$loc_it = setlocale(LC_TIME, 'it_IT.UTF8', 'it.UTF8', 'it_IT.UTF-8', 'it.UTF-8');
$loc_fr = setlocale(LC_TIME, 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8');
// Richtiges Sprachpaket auf Server finden ( per shell: locale -a )
echo "Preferred locale for german on this system is ' $loc_de '" ;
echo "Preferred locale for italiano on this system is ' $loc_it '" ;
echo "Preferred locale for français on this system is ' $loc_fr '" ;
// ohne dies wird $loc_fr verwendet
setlocale(LC_TIME, $loc_de);
// Infos zu Locales: http://tom-muck.com/cw/linuxlocales.cfm/
Einstellungen damit Montag in der richtigen Sprache erscheint