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%)
-----


Np.
  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.  
  11. $tmp = $start;
  12. echo "start: ".date('Y m d',$start) . "</br>\n";
  13. do {
  14.  
  15. $tmp = strtotime('+'.$intervals[$cstep%$intervals_elems].' days', $tmp);
  16. $cstep++;
  17. echo "$cstep: ".date('Y m d', $tmp)."\n";
  18.  
  19. } while ($tmp < $end);
  20.  
  21. echo "koniec: ".date('Y m d', $end)."\n";
  22. ?>
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: 10.10.2025 - 13:12