Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie który tydzień roku od pierwszego dnia roku jako w01
Forum PHP.pl > Forum > PHP
miniol
Czy jest jakiś prosty pomysł na zliczanie tygodnia w roku, ale tak aby był 01.01.2021 liczony już jako week 01, a nie week53 zeszłego roku?
Czy może jedyna opcja to wstawić kilka warunków, żeby to zadziałało tak jakbym chciał?

  1. $week= date("W", strtotime('2021-01-01'));
  2. echo "Dziś jest ".$week." tydzień roku.";
  3. //Dziś jest 53 tydzień roku.
  4. //A chciałbym, żeby był 01.
  5.  
  6. $week= date("W", strtotime('2021-01-12'));
  7. echo "Dziś jest ".$week." tydzień roku.";
  8. //Dziś jest 02 tydzień roku.
  9. //A chciałbym, żeby był 03.



Oczywiście wymuszenie sztywnego odjęcia jednego tygodnia na sztywno mija się z celem, bo jeśli któregoś roku 01 stycznia wypadnie w poniedziałek to będzie znowu źle zliczane.
trueblue
A tak:
ceil(roznica_dni / 7)
?
viking
https://stackoverflow.com/a/51625961
miniol
Mam coś takiego i chyba tak zostawię. Działa jak powinno.

Ale bardziej chyba tego się nie da skrócić.

  1. <?php
  2.  
  3. $sprawdzana_data = '2024-01-01';
  4. if (date("w", strtotime($sprawdzana_data)) != 1) {
  5. if (date("o", strtotime($sprawdzana_data)) != date("Y", strtotime($sprawdzana_data))) {
  6. $tydzien = 1;
  7. }
  8. else {
  9. $tydzien = date("W", strtotime($sprawdzana_data)) + 1;
  10. }
  11. }
  12. else {
  13. $tydzien = date("W", strtotime($sprawdzana_data));
  14. }
  15. echo $sprawdzana_data." to ".$tydzien." tydzień roku.";
  16.  
  17. ?>


A tak poza tym, to zacząłem czytać jak powinny być zliczane tygodnie wg ISO_8601 to stwierdzam, że chyba zostanę przy standardowym zliczaniu tygodni.
Pyton_000
  1. <?php
  2. $sprawdzana_data = '2024-01-01';
  3. $week = floor((date('z', strtotime($sprawdzana_data))) / 7)+1;
  4. echo $sprawdzana_data." to ".$week ." tydzień roku.";
miniol
Cytat(viking @ 2.01.2021, 15:18:12 ) *

To rozwiązanie to nie to czego szukam. Ta funkcja to dokładnie to samo co:
  1. echo substr(date("oW", strtotime("2024-01-01")),2,4);


Ten mój kod który tu wstawiłem również jest niekompletny, bo ma problem z datami kończącymi rok (np 2022-12-31)

Cytat(Pyton_000 @ 2.01.2021, 20:13:12 ) *
  1. <?php
  2. $sprawdzana_data = '2024-01-01';
  3. $week = floor((date('z', strtotime($sprawdzana_data))) / 7)+1;
  4. echo $sprawdzana_data." to ".$week ." tydzień roku.";

Tu też jest błąd, bo np 2021-01-04 powinien być w02, a jest jako pierwszy.

Ma ktoś jeszcze jakiś pomysł na to?
viking
Fri 2021-01-01: 1 //A chciałbym, żeby był 01.
Tue 2021-01-12: 3 //A chciałbym, żeby był 03.
Sat 2022-12-31: 53

Nie bardzo wiem czego w takim razie szukasz. Bo dopełnić zerem chyba potrafisz.
Pyton_000
Może zdecyduj się w końcu jak chcesz żeby liczyło te tygodnie czy od początku roku (czyli to co Ci podałem) czy tak jak jest to zapisane w ISO (jeśli np. sobota jest już w nowym roku to luczy się jako tydzień poprzedniego roku czyli 53)

Cytat
Tu też jest błąd, bo np 2021-01-04 powinien być w02, a jest jako pierwszy.

A niby czemu 2 tydzień?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.