Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pętla dla daty strtotime();, Pętla dodaje co dwa i co 5 dni do osiągnięcia końcowej daty
gmc21
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.04.2015

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


Cześć wszystkim,

Jestem bardzo początkujący i nie wiem jak zrobić pętlę, która po ustawieniu daty startowej i końcowej wypisywałaby kolejne daty co 2 oraz co 5 dni, aż do wyniku <= daty końcowej.
Pomożecie? (IMG:style_emoticons/default/biggrin.gif)

  1.  
  2. $data = strtotime('2015-04-21');
  3.  
  4. $start = strtotime('+5 days', $data);
  5. $per2 = strtotime('+2 days', $start);
  6. $per5 = strtotime('+5 days', $per2);
  7.  
  8. $per2b = strtotime('+2 days');
  9. $sum = $per5 + $per2b;
  10.  
  11. $end = strtotime('+8 week', $start);
  12.  
  13. // echo date('Y-m-d', $start) . '<br>';
  14. // start pętli : wypisuje daty co dwa i co pięć aż do daty końcowej $end = strtotime('+8 week', $start);
  15. // echo date('Y-m-d', $per2) . '<br>';
  16. // echo date('Y-m-d', $per5) . '<br>';
  17. // koniec pętli jeśli ostatnia data z pętli będzie mniejsza bądz równa do daty końcowej $end = strtotime('+8 week', $start);
  18.  
  19. while ( $sum <= $end) {
  20. echo date('Y-m-d', $sum) . '<br>';
  21. }
  22.  


Zmodyfikowałem poprzednią pętle, tylko zamiast wypisywać co 5 dni i co 2 dni to po prostu dodaje, i wypisuje daty co 7 dni :/

Czy może mi ktoś pomóc?

  1. // Data początkowa
  2. $date = '2015-04-21';
  3. // Data końcowa
  4. $end_date = '2015-12-30';
  5.  
  6. while (strtotime($date) <= strtotime($end_date)) {
  7. echo "$date" . '<br>';
  8. $date = date("Y-m-d", strtotime("+5 day", strtotime($date)));
  9. $date = date("Y-m-d", strtotime("+2 day", strtotime($date)));
  10. }


Ten post edytował gmc21 20.04.2015, 12:38:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mar1aczi
post
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


  1. <?php
  2.  
  3. $ctime = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
  4. $start = strtotime('+5 days', $ctime);
  5. $end = strtotime('+8 weeks', $ctime);
  6.  
  7. $intervals = array(2, 5); // co ile dni przeskakiwać
  8. $intervals_elems = count($intervals);
  9. $cstep = 0;
  10. $events = array('w1', 'w2', 'w3', 'w4', 'w5');
  11. $event_elems = count($events);
  12.  
  13. $tmp = $start;
  14. echo "start: ".date('Y m d',$start) . "</br>\n";
  15. do {
  16.  
  17. $tmp = strtotime('+'.$intervals[$cstep%$intervals_elems].' days', $tmp);
  18. echo $events[$cstep%$event_elems].": ".date('Y m d', $tmp)."\n";
  19. $cstep++;
  20.  
  21. } while ($tmp < $end);
  22.  
  23. echo "koniec: ".date('Y m d', $end)."\n";
  24. ?>

Dalej myślisz już sam (IMG:style_emoticons/default/smile.gif)
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: 7.10.2025 - 17:48