Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zliczanie który tydzień roku od pierwszego dnia roku jako w01
miniol
post 2.01.2021, 11:21:53
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował miniol 2.01.2021, 11:27:18
Go to the top of the page
+Quote Post
trueblue
post 2.01.2021, 12:08:29
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A tak:
ceil(roznica_dni / 7)
?


--------------------
Go to the top of the page
+Quote Post
viking
post 2.01.2021, 15:18:12
Post #3





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


https://stackoverflow.com/a/51625961


--------------------
Go to the top of the page
+Quote Post
miniol
post 2.01.2021, 15:57:13
Post #4





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował miniol 2.01.2021, 16:18:27
Go to the top of the page
+Quote Post
Pyton_000
post 2.01.2021, 20:13:12
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


  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.";


Ten post edytował Pyton_000 2.01.2021, 20:14:51
Go to the top of the page
+Quote Post
miniol
post 3.01.2021, 12:59:07
Post #6





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
viking
post 3.01.2021, 13:13:12
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 3.01.2021, 13:26:38
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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ń?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 17:53