Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak sprawdzić czy data jest większa
miras
post 2.07.2012, 12:58:13
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Witam, mam następujący problem, jak sprawdzić, czy $data1 jest większa o 3 godziny od $data2 ?

np.


$d="2012-07-02 13:47";

$d1="2012-07-02 10:47";

jak to wykonać?

Dzięki z góry.


--------------------
Go to the top of the page
+Quote Post
Crozin
post 2.07.2012, 13:21:34
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. DateTime
2. DateTime::modify
3. PHP ma przeciążone operatory porównania dla obiektów DateTime, więc ostatecznie wystarczy $date1 < $date2.
Go to the top of the page
+Quote Post
emkej
post 2.07.2012, 13:22:29
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 5
Dołączył: 18.06.2012

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


Mozna np. przy uzyciu tego: http://www.php.net/manual/pl/datetime.diff.php


--------------------
http://tropmy.net - narzędzie do badania usability stron WWW.
Go to the top of the page
+Quote Post
miras
post 2.07.2012, 13:35:32
Post #4





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


no tak, ale ja potrzebuję sprzwdzić czy jest większe minimalnie o 3 godziny więc muszę jakoś dodać te godziny do którejś z dat albo już nie wiem..


--------------------
Go to the top of the page
+Quote Post
AdIoS_Neo
post 2.07.2012, 13:47:00
Post #5





Grupa: Zarejestrowani
Postów: 159
Pomógł: 43
Dołączył: 8.03.2009

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


Witam,
masz tu prosty przykładzik
  1. $d = new DateTime("2012-07-02 13:47");
  2. echo $d -> format("Y-m-d H:i") . "<br/>";
  3.  
  4. $d1 = new DateTime("2012-07-02 10:47");
  5. echo $d1 -> format("Y-m-d H:i") . "<br/>";
  6.  
  7. $d1 -> modify("+3 hours");
  8. echo $d1 -> format("Y-m-d H:i") . "<br/>";
  9.  
  10. if($d1 <= $d)
  11. echo "d1 <= d - true";
Go to the top of the page
+Quote Post
miras
post 2.07.2012, 19:25:56
Post #6





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


coś jest nie tak, bo przy takim kodzie:


  1.  
  2. $d = $_POST['start'];
  3. $d1 = $_POST['start'];
  4. $d1 -> modify("+2 hours");
  5. $d1 -> format("Y-m-d H:i");
  6.  
  7. if($d1 <= $d) {
  8.  
  9. $so="ok";
  10.  
  11.  
  12. }
  13.  


mam błąd:


Fatal error: Call to a member function modify() on a non-object in /home/aronzuk/public_html/kosz/new_sz/aplications/dodaj_zlecenie.php on line 304

Ten post edytował miras 2.07.2012, 19:39:07


--------------------
Go to the top of the page
+Quote Post
peter13135
post 2.07.2012, 19:31:20
Post #7





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


modify to metoda, którą wykonujesz na obiekcie dateTime, a nie na stringu :/

Ten post edytował peter13135 2.07.2012, 20:29:35


--------------------
:)
Go to the top of the page
+Quote Post
miras
post 2.07.2012, 19:38:38
Post #8





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Kompletnie nie rozumiem twojej wypowiedzi..


--------------------
Go to the top of the page
+Quote Post
peter13135
post 2.07.2012, 20:30:10
Post #9





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Fakt. Miałem pare błędów językowych. Poprawione.


--------------------
:)
Go to the top of the page
+Quote Post
miras
post 2.07.2012, 20:41:29
Post #10





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


ehh, szanuje Cię pod względem Twojej wiedzy, ale jestem pewien, że w wielu rzeczach jesteś daleko za mną - życzę Ci tego, abyś potrzebował od kogoś pomocy i żeby ten ktoś popisywał się przed Tobą właśnie tak jak Ty pajacujesz teraz.


--------------------
Go to the top of the page
+Quote Post
peter13135
post 2.07.2012, 21:09:47
Post #11





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Pokazałeś kod i błąd, a ja podałem przyczynę błędu wskazałem Ci jak poprawnie ten problem rozwiązać. Czego więcej się spodziewasz ?
Jak ma wyglądać poprawny kod masz podane w linku który podał Crozin. Zainteresowałeś się nim chociaż ?
Uwierz mi, że nie moja wiedza i umiejętności programistyczne nie są nawet średnie i mam wiele ciekawszych rzeczy do roboty niż "pajacowanie".
Poświęciłem parenaście sekund na przeczytanie tematu i udzielenie odpowiedzi. Nawet jeśli moja odpowiedź okazała się dla Ciebie bezużyteczna, to możesz to oznajmić w bardziej grzeczny sposób.
Być może powinienem olać ten temat, pomysleć, że masz gorszy dzień czy coś. No cóż, jeszcze się tego nie nauczyłem.


--------------------
:)
Go to the top of the page
+Quote Post
miras
post 2.07.2012, 22:25:54
Post #12





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


no ok, zrobiłem to w ten sposób i gdy do $_POST['start'] podam wartość: 2012-07-10 23:32 to nie ma żadnych błędów ale z tego zapytania: if ($d1 >= $datkarl) wywala false...

  1. $datkarl=date("Y-m-d H:i");
  2. $datkarl=date_create($datkarl);
  3.  
  4. $datka=$_POST['start'];
  5. $d = date_create($datka);
  6. $d1 = date_modify($d, '+2 hours');
  7.  
  8. if ($d1 >= $datkarl) {
  9.  
  10. $so="ok";
  11.  
  12.  
  13. }


--------------------
Go to the top of the page
+Quote Post
PtasiorZz
post 3.07.2012, 05:35:53
Post #13





Grupa: Zarejestrowani
Postów: 17
Pomógł: 3
Dołączył: 2.04.2010

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


  1. $datkarl=new DateTime( date("Y-m-d H:i") );
  2.  
  3. $d = new DateTime( "2012-07-10 23:32" );
  4. $d -> modify( '+2 hours' );
  5.  
  6. if ( $d >= $datkarl ) {
  7. echo "ok";
  8. }


Teoretycznie date_create to alias konstruktora klasy DateTime, aczkolwiek w Twoim przykładzie go nie zwraca. Spróbuj tego powyżej, działa.
Go to the top of the page
+Quote Post
thek
post 3.07.2012, 09:21:25
Post #14





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A może powodem jest sam php? DateTime weszło od wersji 5.2 i jeśli ma niższą - nie zadziała. Wtedy pozostanie mu korzystanie z strtotime.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
miras
post 3.07.2012, 13:30:22
Post #15





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Cytat(PtasiorZz @ 3.07.2012, 05:35:53 ) *
  1. $datkarl=new DateTime( date("Y-m-d H:i") );
  2.  
  3. $d = new DateTime( "2012-07-10 23:32" );
  4. $d -> modify( '+2 hours' );
  5.  
  6. if ( $d >= $datkarl ) {
  7. echo "ok";
  8. }


Teoretycznie date_create to alias konstruktora klasy DateTime, aczkolwiek w Twoim przykładzie go nie zwraca. Spróbuj tego powyżej, działa.



No dobrze, ale przecież ja potrzebuję wstawić tutaj $d= new DataTime($_POST['start']); a jak tak wstawie to dostaje false z $d >=$datkarl i w przeciwnym wypadku tak samo, wiec coś jest nie tak..

  1. $datkarl=date("Y-m-d H:i");
  2.  
  3. $d = strtotime($_POST['start']);
  4. $d = strtotime($d, '+2 hours');
  5.  



to tak samo, zero efektu, po prostu już nie mam ani siły ani zielonego pojęcia jak to rozwiązać..


--------------------
Go to the top of the page
+Quote Post
mls
post 3.07.2012, 14:46:23
Post #16





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Cytat(miras @ 2.07.2012, 13:58:13 ) *
Witam, mam następujący problem, jak sprawdzić, czy $data1 jest większa o 3 godziny od $data2 ?


  1. $data1 = strtotime("2012-07-02 13:47:00");
  2. $data2 = strtotime("2012-07-02 10:47:00");
  3.  
  4. if ($data1 > ($data2 + 10800))
  5. {
  6. // większa o 3 godziny
  7. }


--------------------
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:07