Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] operowanie czasem
modern
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 2.10.2005

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


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ń (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


Ten post edytował modern 10.12.2007, 12:24:58
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
kszychu
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


O Jezu, a co to.....
Polecam poczytać przykłady do funkcji date() i mktime(). To, co tu zrobiłeś załatwia się jedną linijką.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 08:47