Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kalendarz i cykliczność
Mlodycompany
post
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Powitać wszystkich. Robię kalendarz z możliwością tworzenia cyklicznych zadań. Utknąłem na cykliczności tygodniowej. Mam taki kod
  1. define('SECDAY', 86400);
  2. $round = 0;
  3.  
  4. $weeks = array();
  5.  
  6. $count = ceil($_POST['cyclicity']['finish']['round'] / count($_POST['cyclicity']['days']));
  7. for($i = 0; $i < $count; $i++){
  8. $time = $startTime + 7 * SECDAY * $i * $_POST['cyclicity']['repeat'];
  9. $week = date("W", $time);
  10. $year = date("Y", $time);
  11. $weeks[] = $year.":".$week;
  12. }
  13. while ($round < $_POST['cyclicity']['finish']['round']) {
  14.  
  15. $isDay = in_array(date("N", $startTime), $_POST['cyclicity']['days']);
  16. $isWeek = in_array(date("Y:W", $startTime), $weeks);
  17. echo date("N", $startTime), ":".$isDay. "\t";
  18. echo date("Y:W", $startTime), ":".$isWeek. "\n";
  19. if ($isDay && $isWeek) {
  20. $options = $_POST;
  21. $options['id'] = 'add_' . rand(0, 99999999999);
  22. if ($parentId == null) {
  23. $parentId = $options['id'];
  24. }
  25. else {
  26. $options['parentId'] = $parentId;
  27. }
  28. $options['start'] = date('Y-m-d H:i', $startTime);
  29. if ($length) {
  30. $options['end'] = date('Y-m-d H:i', $startTime + $length);
  31. }
  32. $events[] = $options;
  33. $round ++;
  34. $startTime += SECDAY;
  35. }
  36. else {
  37. $startTime += SECDAY;
  38. }
  39.  
  40. }


Na wstępie wrzucam sobie do tablicy wszystkie tygodnie, w których dane zadanie będzie miało miejsce. To działa dobrze. Problem powstaje w momencie gdy zmienia się rok na następny. Tydzień wtedy się 'zeruje'. Gdy while np. dojdzie do dnia 30.12.2013, który znajduje się w 1 tygodniu, ale w 2013 roku. W tablicy z tygodniami mam 50 tydzień 2013 roku, następnie 1 tydzien 2014 roku, 4/2014 a 1/2013 się w niej nie znajduje. Pytanie brzmi jak zrobić aby
  1. date("Y:W", strtotime("30.12.2013"))
zwróciło zamiast 2013:01 to 2014:01. Wiem, że trochę do kitu to wytłumaczyłem ale jakoś nie wiem jak to opisać..
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 21.08.2025 - 06:17