Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] operowanie czasem
Forum PHP.pl > Forum > Przedszkole
modern
Witam, mam problem

czy jest jakiś prosty sposób na dodawanie X godzin oraz Y minut i Z sekund do pewnej daty?
biorąc pod uwage to że gdy Z > 59 to Y = Y + 1 a Z = Z - 60
tak samo z godziną ... a nawet i dniem... bo co jeżeli to będzie 23:59:02
a dodam 2 minuty ? będzie już kolejny dzień smile.gif
a co jeśli będzie 30-01 23:59:02 i dodam 2 minuty ?
będzie kolejny miesiąc...
tylko że nie każdy miesiąc ma tyle samo dni....

póki co zrobiłem takie coś....
ale wiem że to będzie wadliwy system bo dni w miesiącach nie jest tyle samo : (

  1. <?
  2.  
  3. $data_wyruszenia = '2007-12-10 10:58:58';
  4. $data_wyruszenia = date('Y-m-d H:i:s', strtotime($data_wyruszenia));
  5. $s_wyruszenia = date('s', strtotime($data_wyruszenia));
  6. $i_wyruszenia = date('i', strtotime($data_wyruszenia));
  7. $h_wyruszenia = date('H', strtotime($data_wyruszenia));
  8. $d_wyruszenia = date('d', strtotime($data_wyruszenia));
  9. $m_wyruszenia = date('m', strtotime($data_wyruszenia));
  10. $y_wyruszenia = date('Y', strtotime($data_wyruszenia));
  11.  
  12.  
  13. $data = date('Y-m-d H:i:s'); // dzisiajsza data
  14. $s_data = date('s');
  15. $i_data = date('i');
  16. $h_data = date('H');
  17. $d_data = date('d');
  18. $m_data = date('m');
  19. $y_data = date('Y');
  20.  
  21.  
  22. $r_y = $y_data - $y_wyruszenia;
  23. $r_m = $m_data - $m_wyruszenia;
  24. $r_d = $d_data - $d_wyruszenia;
  25. $r_h = $h_data - $h_wyruszenia;
  26. $r_i = $i_data - $i_wyruszenia;
  27. $r_s = $s_data - $s_wyruszenia;
  28.  
  29.  
  30. if($r_s < '0')
  31.  {
  32. $r_i = $r_i - 1;
  33. $r_s = 60 + $r_s;
  34.  }
  35.  
  36. if($r_i < '0')
  37.  {
  38. $r_h = $r_h - 1;
  39. $r_i = 60 + $r_i;
  40.  }
  41.  
  42.  $s_h = $h_data + $r_h;
  43.  $s_i = $i_data + $r_i;
  44.  $s_s = $s_data + $r_s;
  45.  
  46. if($s_s > '59')
  47.  {
  48. $s_i = $s_i + 1;
  49. $s_s = $s_s - 60;
  50.  }
  51.  
  52. if($s_i > '59')
  53.  {
  54. $s_h = $s_h + 1;
  55. $s_i = $s_i - 60;
  56.  }
  57.  
  58.  
  59. $data_powrotu_ymd = date('Y-m-d');
  60. $data_powrotu_his = $s_h.':'.$s_i.':'.$s_s;
  61.  
  62. $data_powrotu = $data_powrotu_ymd.' '.$data_powrotu_his;
  63.  
  64. echo 'data obecna: '.$data.'<br>';
  65. echo 'data wyruszenia: '.$data_wyruszenia.'<br>';
  66. echo 'data powrotu: '.$data_powrotu.'<br><br>';
  67.  
  68. echo 'roznica lat: '.$r_y.'<br>';
  69. echo 'roznica miesiecy: '.$r_m.'<br>';
  70. echo 'roznica dni: '.$r_d.'<br>';
  71. echo 'roznica godzin: '.$r_h.'<br>';
  72. echo 'roznica minut: '.$r_i.'<br>';
  73. echo 'roznica sekund: '.$r_s.'<br>';
  74.  
  75.  
  76. ?>
nospor
uzywasz funkcji a nawet nie zajrzysz do manuala i nie sprawdzisz co tak naprawde potrafia....
http://pl2.php.net/manual/pl/function.strtotime.php
  1. <?php
  2. echo strtotime ("now"), "\n";
  3. echo strtotime ("10 September 2000"), "\n";
  4. echo strtotime ("+1 day"), "\n";
  5. echo strtotime ("+1 week"), "\n";
  6. echo strtotime ("+1 week 2 days 4 hours 2 seconds"), "\n";
  7. echo strtotime ("next Thursday"), "\n";
  8. echo strtotime ("last Monday"), "\n";
  9. ?>


ps: przenosze
kszychu
O Jezu, a co to.....
Polecam poczytać przykłady do funkcji date() i mktime(). To, co tu zrobiłeś załatwia się jedną linijką.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.