2016-04-14 8 views
0

Im Filterung Urlaub aus einer bestimmten Anordnung von Daten wie folgt erhalten:Namen des Tages aus Reihe von Terminen

date_default_timezone_set('Europe/Berlin'); 

$timestamp = strtotime('monday this week'); 
$holidays = array('Sonntag 17.04.','Dienstag 19.04.','Mittwoch 20.04.'); 

$days = array(); 
for ($i = 0; $i < 14; $i++) : 
$days[] = strftime('%A %d.%m.', $timestamp); 
$timestamp = strtotime('+1 day', $timestamp); 
endfor; 

foreach($days AS $day) : 
if (in_array($day, $holidays)) : 
echo $day . ' is a holiday and ' . (strftime('%A', strtotime($day))) . '<br />'; 
else : 
echo $day . '<br />'; 
endif; 
endforeach; 

jetzt würde Ich mag auch den Namen des Tages wie folgt erhalten:

"Dienstag 19.04. Ist ein Feiertag und ein Dienstag"

Wie kann ich dies erreichen?

+0

Kann der letzte ** Dienstag ** erreicht werden, indem nur das erste Wort aus der Variable 'day' abgerufen wird? Wenn ja, ist es nur ein 'substr ($ day, strpos ($ day, '') -1);' – Edu

Antwort

0
<?php 
date_default_timezone_set('Europe/Berlin'); 
setlocale(LC_TIME, 'de_DE'); 
$timestamp = strtotime('monday this week'); 
$holidays = array('Sonntag 17.04.','Dienstag 19.04.','Mittwoch 20.04.'); 
$enHolidays = array_map('daysToEn',$holidays); 

$days = array(); 
for ($i = 0; $i < 14; $i++) : 
$days[] = strftime('%A %d.%m.', $timestamp); 
$timestamp = strtotime('+1 day', $timestamp); 
endfor; 

foreach($days AS $day) : 
if (in_array($day, $enHolidays)) : 
echo daysToDe($day) . ' is a holiday and ' . daysToDe(strftime('%A', strtotime($day))) . '<br />'; 
else : 
echo $day . '<br />'; 
endif; 
endforeach; 


function daysToEn($dayName) { 
    $engDays = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); 
    $duDays = array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'); 
    return str_replace($duDays,$engDays,$dayName); 
} 

function daysToDe($dayName) { 
    $engDays = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); 
    $duDays = array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'); 
    return str_replace($engDays,$duDays,$dayName); 
} 
+0

danke, aber das funktioniert nicht. Ich bekomme immer den gleichen Wert (Donnerstag) für jeden Tag. – hes

+0

@hes Es funktioniert gut. http://sandbox.onlinephpfunctions.com/code/5757a0558251b0f831d81978337dfe9990a1e909 – Mojtaba

+0

hmm, du hast Recht. Vielleicht nicht in meinem Fall, weil ich setlocale verwende (LC_ALL, 'de_DE.UTF8', 'de_DE')? – hes

Verwandte Themen