2012-12-28 11 views
19

Przeglądałem przykłady w Internecie i uważam je za nieco zagadkowe lub przesadne.

Co muszę zrobić coś takiego:

$timestamp = time(); 

a następnie dowiedzieć się, czy dzień jest poniedziałek lub pięścią w miesiącu?

Jestem pewien, że to możliwe, nie jestem po prostu pewna, jak to zrobić.

+0

http://php.net/manual/en/class.datetime.php –

+0

ty nedd kwerendy danych według poniedziałek lub 1-sza lub po prostu dowiedzieć się, czy to 1-ty lub poniedziałek? ;) – Xfile

+0

@Xfile Po prostu muszę wiedzieć, czy dzisiaj jest poniedziałek? I w osobnej linii muszę wiedzieć, czy dziś jest pierwszy w tym miesiącu. Zasadniczo istnieją przypomnienia, które muszą być wysyłane co tydzień i co miesiąc, dlatego właśnie tego potrzebuję. – Genadinik

Odpowiedz

42

Właściwie nie trzeba zmienną datownika, ponieważ:

Exerpt z date funkcji php.net:

Zwraca ciąg sformatowany zgodnie z podanym ciągiem formatów przy użyciu podanego znacznika czasu całkowitego lub bieżącego czasu, jeśli nie podano znacznika czasu . Innymi słowy, znacznik czasu jest opcjonalny i domyślnie przyjmuje wartość czasu().

if(date('j', $timestamp) === '1') 
    echo "It is the first day of the month today\n"; 

if(date('D', $timestamp) === 'Mon') 
    echo "It is Monday today\n"; 
+4

'if (data ('w', $ timestamp) === '1')' jest lepsze. –

+1

dlaczego jest lepiej? wyjaśniać. Charakter formatu "D" jest bardziej czytelny dla człowieka. –

+2

Myślę, że w niektórych ustawieniach narodowych wynikiem 'date ('D')' może być poniedziałek, ale nie odczytany jako '' Mon''. co więcej, twój kod naprawdę nie obchodzi, czy jest czytelny dla człowieka, chce zareagować we właściwy sposób, jeśli jest poniedziałek, czy nie. –

1

Można użyć: strtotime

$firstdaymonth = strtotime('first day this month'); 
+1

Przepraszam, trochę zagubiona, jak mogę wprowadzić "pierwszy dzień w tym miesiącu" do tej funkcji? – Genadinik

+3

pisząc dosłownie "pierwszy dzień w tym miesiącu". strtotime je akceptuje. google it :) –

2

To będzie chwycić .. poniedziałek od mysql

$monday = 1; //tuesday= 2.. sunday = 7 

    AND $monday = (date_format(from_unixtime(your_date_column),'%w')) 

lub dni ..

$day = 1; ///1st in month 

    AND $day = (date_format(from_unixtime(your_date_column),'%d')) 

jedynie wiedzieć

$date = date("d"); //1st? 
$dayinweek = date("w"); //monday? //as a number in a week what you need more then just "Monday" I guess.. 
6

Należy go rozwiązać:

$day = date('D'); 
$date = date('d') 
if($day == Mon){ 
    //Code for monday 
} 
if($date == 01){ 
    //code for 1st fo the month 
} 
else{ 
    //not the first, no money for you =/ 
} 
0

Ponieważ $ data może mieć miejsce w niedzielę lub niedzielę. Należy sprawdzić to

public function getWeek($date){ 
    $date_stamp = strtotime(date('Y-m-d', strtotime($date))); 

    //check date is sunday or monday 
    $stamp = date('l', $date_stamp);  

    if($stamp == 'Mon'){ 
     $week_start = $date; 
    }else{ 
     $week_start = date('Y-m-d', strtotime('Last Monday', $date_stamp)); 
    } 


    if($stamp == 'Sunday'){ 
     $week_end = $date; 
    }else{ 
     $week_end = date('Y-m-d', strtotime('Next Sunday', $date_stamp)); 
    }   
    return array($week_start, $week_end); 
} 
Powiązane problemy