Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Data, formatowanie daty
-ZZ-
post 21.02.2005, 22:04:10
Post #1





Goście







Witam,
mam nastepujacy problem z uzyskaniem daty:
znam:

- numer dnia (0..6)
np: $ndzien=1;
- numer tygodnia (1..52 zalezne od roku)
np: $ntyg=8;
- rok (wiadomo)
np: $rok=date('Y');

Potrzebowalbym daty w danym tygodniu i za dany dzien.
mialby poprostu zwrocic '21-02-2005'
Ma ktos jakis pomysl jak tego dokonac? Bo ja juz zglupialem
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
dr_bonzo
post 21.02.2005, 22:43:01
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Manual > Funkcja date()


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
-Guest-
post 21.02.2005, 23:02:33
Post #3





Goście







no to zeczywiscie odkrywcze, myslisz ze nie przegladalem? niestety nie moge dojsc jak z tego wybrnac.
Go to the top of the page
+Quote Post
ARJ
post 21.02.2005, 23:21:52
Post #4





Grupa: Zarejestrowani
Postów: 453
Pomógł: 22
Dołączył: 20.09.2004
Skąd: Kraków - NH -

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


http://pl2.php.net/manual/pl/function.date.php
podrozdział 4. Zastosowania date().


--------------------
Warsztat: Windows 7 Pro 64bit | Apache 2.2 | PHP 5.2 | MySQL 5.0 | PHPmyadmin 2.6.4
Go to the top of the page
+Quote Post
Kuziu
post 21.02.2005, 23:32:10
Post #5





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Widzicie że on ma podany

Dzień, numer tygodnia i rok ?


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
-ZZ-
post 21.02.2005, 23:39:40
Post #6





Goście







eghhh to ma byc pomoc dla poczatkujacych :-P
takie odpowiedzi to ja znam... chodzilo mi o naprowadzenie na temat a nie odpowiedzi tylu zobacz sobie opis date()...
przeczytajcie dokladnie pytanie... gdyby to bylo proste to sam bym zrobil.
Go to the top of the page
+Quote Post
Kuziu
post 21.02.2005, 23:52:37
Post #7





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


  1. <?php
  2.  
  3. $rok = 2005;
  4. $tydzien = 8;
  5. $mojdzien = 1;
  6.  
  7. $pierwszyDzien = date(&#092;"w\",mktime(1,1,1,1,1,$rok)); // sprawdzamy jaki dzień przypadł 1 stycznia
  8. $pierwszyDzien--;
  9.  
  10. if($rok % 4 == 0){ // czy jest to rok przestępny questionmark.gif
  11.  $iloscDniLutego = 29;
  12. }else{
  13.  $iloscDniLutego = 28;
  14. }
  15.  
  16. $miesiace = Array(31,$iloscDniLutego,31,30,31,30,31,31,30,31,30,31);
  17.  
  18. $iloscDni = $tydzien*7;
  19. $miesiac = 1;
  20.  
  21. for($i=0;$i<12;$i++){
  22.  if($iloscDni > $miesiace[$i]){
  23.   $iloscDni = $iloscDni - $miesiace[$i];
  24.   $miesiac++;
  25.  }
  26. }
  27.  
  28. $dzien = $iloscDni - $pierwszyDzien + $mojdzien;
  29.  
  30. echo($dzien . ' - ' . $miesiac . ' - ' . $rok);
  31.  
  32. ?>


Chyba wszystko śmiga jak należy guitar.gif

Ten post edytował Kuziu 21.02.2005, 23:55:13


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
-zz-
post 22.02.2005, 13:51:36
Post #8





Goście







dzieki bardzo o to mi wlasnie chodzilo :-)
Go to the top of the page
+Quote Post
VGT
post 28.02.2005, 14:31:33
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


Może to już nie aktualne ale na wszelki wypadek jeszcze dodam coś od siebie.

Nie przestudiowałem całego skryptu, więc nie wiem czy nieprawidłowa ilość dni lutego może spowodować błędne działanie, ale jeśli tak to ten fragment:
  1. <?php
  2.  
  3. if($rok % 4 == 0){ // czy jest to rok przestępny questionmark.gif
  4. $iloscDniLutego = 29;
  5. }else{
  6. $iloscDniLutego = 28;
  7. }
  8.  
  9. ?>


wymaga poprawek.

Z dawnych czasów jeszcze w C++ miałem funkcję zwracającą ilość dni miesiąca, którą przerobiłem na potrzeby php. Nie jestem w stanie aktualnie podać, skąd źródło informacji o tym, kiedy ile dni ma luty, ale wtedy byłem tego pewien na 100% więc informacje chyba były pewne.

funkcja wygląda tak:

  1. <?php
  2.  
  3. Function daysinmonth($year, $month) 
  4. {
  5. if ($month==1) $dni=31;
  6. if ($month==2)
  7. {
  8.     if (($year % 4) == 0)
  9.     {
  10.         if (($year % 100)==0)
  11.         {
  12.             if (($year % 400)==0) $dni=29; else $dni=28;
  13.         } else $dni=29;
  14.     }
  15.     else $dni=28;
  16. }
  17. if ($month==3) $dni=31;
  18. if ($month==4) $dni=30;
  19. if ($month==5) $dni=31;
  20. if ($month==6) $dni=30;
  21. if ($month==7) $dni=31;
  22. if ($month==8) $dni=31;
  23. if ($month==9) $dni=30;
  24. if ($month==10) $dni=31;
  25. if ($month==11) $dni=30;
  26. if ($month==12) $dni=31;
  27.  
  28. return $dni;
  29. }
  30. ?>


Ten fragment z lutym trzeba oczywiście przerobić, aby dostosować do powyższego skryptu, mi chodzi jedynie o algorytm - ilość dni w lutym zależy od jeszcze kilku czynników, nie tylko od tego czy rok jest podzielny przez 4

Ten post edytował Bonastick 28.02.2005, 14:39:46
Go to the top of the page
+Quote Post
Kuziu
post 28.02.2005, 14:40:56
Post #10





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Od jakich ? Rok przestepny jest co 4 lata i tyle.

a tak btw. to po co pisać 12 if'ów if($month==1) if....

jak można dac 1 tablice i robić

  1. <?php
  2.  
  3. $miesiace = Array(31,$iloscDniLutego,31,30,31,30,31,31,30,31,30,31);
  4.  
  5. $miesiac[$numer];
  6.  
  7. ?>


Ten post edytował Kuziu 28.02.2005, 14:49:13


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
VGT
post 28.02.2005, 14:48:33
Post #11





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


Cytat(Kuziu @ 2005-02-28 13:40:56)
Od jakich ? Rok przestepny jest co 4 lata i tyle.

Spójrz na algorytm do lutego w moim skrypcie, to otrzymasz odpowiedz na pytanie "od jakich"

poszukałem aby potwierdzić to co piszę:

http://pl.wikipedia.org/wiki/Rok_przestępny
Go to the top of the page
+Quote Post
Kuziu
post 28.02.2005, 14:51:53
Post #12





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


No racja ...

ale 1 doba na 2620 lat to chyba w kalendarzu z aktualną datą się nie przyda ....


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
VGT
post 28.02.2005, 14:55:17
Post #13





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


Nie określono, jakie daty ten skrypt ma uzyskiwać..
Może np chodzić o jakieś daty historyczne, przy których to już może mieć znaczenie i dlatego wolałem się do tego szczegółu przyczepić winksmiley.jpg

A taki błąd jaki podajesz (2620 lat) jest właśnie PO wprowadzeniu tych korekt. Bez nich (29 dni co 4 lata) błąd 1 doby pojawia się co 128 lat smile.gif

Oczywiście cała ta różnica dla skryptu nie ma znaczenia, gdyż jest to różnica względem kalendarza astronomicznego.

Dla skryptu miałoby znaczenie (pojawiła by się różnica 1 dnia) jeśli trafiłoby na rok, dla którego twoja funkcja poda 29 dni, a tak na prawde powinno być 28 dni.

Ten post edytował Bonastick 28.02.2005, 14:58:39
Go to the top of the page
+Quote Post
Kuziu
post 28.02.2005, 16:31:14
Post #14





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Dat historycznych i tak nie otrzymasz za pomocą funkcji time() więc ...

... ale oczywiście mój błąd ... z tym, ze w tym wypadku nie taki ważny tongue.gif

Ten post edytował Kuziu 28.02.2005, 16:34:01


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
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: 18.07.2025 - 16:24