2010-10-21 12 views
10

Czy istnieje sposób, aby znaleźć dzień tygodnia w php z konkretną datą.Trzeci czwartek miesiąca w php

nie mam na myśli

date('D', $timestamp); 

mam na myśli, gdybym był dostarczyć datę jak 2010-10-21 byłoby wrócić „trzeci czwartek”.

Odpowiedz

12

Nie bezpośrednio, trzeba funkcję pomocnika na to:

function literalDate($timestamp) { 
    $timestamp = is_numeric($timestamp) ? $timestamp : strtotime($timestamp); 
    $weekday = date('l', $timestamp); 
    $month  = date('M', $timestamp); 
    $ord  = 0; 

    while(date('M', ($timestamp = strtotime('-1 week', $timestamp))) == $month) { 
     $ord++; 
    } 

    $lit = array('first', 'second', 'third', 'fourth', 'fifth'); 
    return strtolower($lit[$ord].' '.$weekday); 
} 

echo literalDate('2010-10-21'); // outputs "third thursday" 

przykład robocza:

http://codepad.org/PTWUocx9

+0

Czy chodziło o '$ weekday = date ('l', $ timestamp)'? – xtofl

+0

Dzięki ... To doprowadziło mnie do właściwego kierunku. – Jason

+0

@xtofl, yup, naprawiono. @Pekka, dzięki! –

4

strtotime() wydaje się rozumieć składnię. Musisz tylko podać pierwszy dzień danego miesiąca jako punkt wyjścia.

echo date("d.m.Y", strtotime("third thursday", mktime(0,0,0,10,1,2010))); 
// Will output October 21 

echo date("d.m.Y", strtotime("third thursday", mktime(0,0,0,11,1,2010))); 
// Will output November 18 
+0

myślę, że masz go w niewłaściwy sposób wokół, chciał "date => dosłowną reprezentację", a nie "reprezentację dosłowną => datę". –

+0

@ Masz rację, źle odczytałem. –

+1

Pekka, dziękuję za odpowiedź. to też pomaga. – Jason

Powiązane problemy