2015-09-15 7 views
10

Chcę ustawić pierwszy dzień tygodnia na czwartek (nie w niedzielę lub poniedziałek), ponieważ jest to data wyłączenia firmy.Jak ustawić "pierwszy dzień tygodnia" na czwartek w PHP

Mam już kod określający bieżący numer tygodnia dla daty, ale zaczyna się w niedzielę lub poniedziałek.

Jak zmienić te ustawienia zgodnie z moimi preferencjami?

function findweek($date) { 
    $monthstart=date("N",strtotime(date("n/l/Y",strtotime($date)))); 
    $newdate=(date("j",strtotime($date))+$monthstart)/7; 
    $ddate=floor($newdate); 
    if($ddate != $date) { 
     $ddate++; 
    } 
    return $ddate; 
} 
+0

Dostaję ur punkt .......... wat dokładnie chcesz zrobić –

+0

w naszej firmie początek tygodnia licznik wynagrodzeń jest czwartek, a nie w niedzielę lub poniedziałek tak, aby rozpocząć liczenie każdego tygodnia każdego miesiąca jest w czwartek. –

+0

@RaydenBlack Sprawdź, czy to może ci pomóc http://codepad.org/tI0nMQPo może być konieczne dostosowanie formatu datetime – Shehary

Odpowiedz

1

To powinno zadziałać.

function findweek($date, $type = "l") { 
    $time = strtotime($date); 
    return date($type, mktime(0, 0, 0, date("m", $time) , date("d", $time)-date("d", $time)+1, date("Y", $time))); 
} 

echo findweek('2015-09-16'); 
+0

Rezultatem, którego chcę, jest ustawienie pierwszego dnia tygodnia w miesiąc do czwartku, aby nie znajdował tygodnia. –

1

http://php.net/manual/en/datetime.formats.relative.php mówi, że od wersji 5.6.23, PHP 7.0.8 „Tygodnie zawsze zaczynają się w poniedziałek. Wcześniej, w niedzielę będzie również uznać, aby rozpocząć w tygodniu.” Powiedział, że jest problem liczba zwróconych tygodni może być niepoprawna w zależności od tego, czy dzisiaj przypada w czwartek bieżącego tygodnia, czy przed nim? Może spróbuj coś takiego:

$date = new DateTime(); 
$week = intval($date->format('W')); 
$day = intval($date->format('N')); 
echo $day < 4 ? $week-1 : $week; 

Jeżeli odjęcie 1 nie jest odpowiedź można bawić się z Dodawanie/odejmowanie, porównując wynik z rzeczywistą odpowiedź znasz, żeby było prawdziwe, aż do uzyskania odpowiedniej formuły. Mam nadzieję że to pomoże!

Powiązane problemy