Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zakres dat
termin
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

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


Witam, mam mały problemik. Zrobilem sklep internetowy (wew w firmie), wszystko dziala jak nalezy to czasu, czyli do grudnia, bo w styczniu wszystko sie pokszaniło. Wyjaśnie o co chodzi. W moim sklepie poszczegolne dzialy moga zamawiac artykuly biurowe. zamówienia są zbierane do 20 kazdego miesiaca wlacznie, a nastepnie są realizowane. Dzis mamy 2004-12-11 czyli jeszcze mogę robic zamowienie na miesiac grudzień, czyli zakres zbieranych zamowienien jest od 2004-11-21 do 2004-12-20. Dnia 2004-12-21 ten zakres juz bedzie od 2004-12-21 do 2005-01-20. No właśnie i tutaj pojawia sie problem, bo wczesniej zakres ustalalem tak ze dodawalem do miesiaca +1 i dzialalo, a przeciez miesiac 12+1 to juz 13 a nie ma miesiaca 13 (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) Czy ktoś może mi pomóc w napisaniu skryptu ktory bedzie odpowiednio reagowal na konczący sie rok. Może ktoś napisze jakąś prostą funkcję, która by to załatwiła, lecz trzeba zwracać 2 wartości: $date_od i $date_do.

Aha i jeszcze jedno. prosze zwrócic uwagę, że jak ktoś dnia 2004-12-25 będzie sprawdzał zakres dat to musi to być w przedziale 2004-12-21 do 2005-01-20, a jak będzie sprawdzać 2005-01-10 to musi być dokładnie ten sam zakres. Zakresy zmieniają się po 20 każdego miesiąca.

Ten post edytował termin 11.12.2004, 12:43:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
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%)
-----


  1. <?php
  2. $the_day = 20; // [1, 28] (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
  3.  
  4. if ( intval( date( 'j' ) ) > $the_day )
  5. {
  6. // zamowienia na przyszly miesiac, tzn: 22 grudnia -> [21 grudnia, 20 stycznia]
  7. $current_month = intval( date( 'n' ) ); // [1, 12]
  8. $start_month = $current_month;
  9. $end_month = ( $current_month + 12 ) % 12 + 1; // nastepny miesiac
  10.  
  11. $current_year = intval( date( 'Y' ) );
  12. $start_year = $current_year;
  13. $end_year = ( $current_month == 12 ) ? $current_year + 1 : $current_year; // jesli teraz jest grudzien to koniec okresu przypada na nastepny rok
  14.  
  15. $start_day = $the_day + 1;
  16. $end_day = $the_day;
  17. }
  18. else
  19. {
  20. // zamowienia na obecny miesiac, tzn: 11 grudnia -> [21 listopad, 20 grudnia]
  21. $current_month = intval( date( 'n' ) ); // [1, 12]
  22. $start_month = ( $current_month + 10 ) % 12 + 1; // poprzedni miesiac; (11 = -1 + 12)
  23. $end_month = $current_month;
  24.  
  25. $current_year = intval( date( 'Y' ) );
  26. $start_year = ( $current_month === 1 ) ? ( $current_year - 1 ) : $current_year; // jesli teraz jest styczen to poczatek okresu przypada na poprzedni rok
  27. $end_year = $current_year;
  28.  
  29. $start_day = $the_day + 1;
  30. $end_day = $the_day;
  31. }
  32.  
  33. $start_date = mktime( 0, 0, 0, $start_month, $start_day, $start_year );
  34. $end_date = mktime( 23, 59, 59, $end_month, $end_day, $end_year );
  35.  
  36.  
  37. print( &#092;"START: \" . date( \"Y-M-d H:i:s\", $start_date ) . \"<br />END: \" . date( \"Y-M-d H:i:s\", $end_date ) . \"<br />\" );
  38. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 21:29