Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z datą
Daiszman
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


Witajcie , nie mogę przebrnąć przez taki temat
Mam skrypt który ma sprawdzić ile dni minęło od daty do daty i zakolorować tło w ramce

  1. <div class="zegar" style="';
  2. $data1 = "2019-03-05 09:52:33";
  3. $datetime1 = new DateTime('NOW');
  4. $datetime2 = new DateTime($data1);
  5. $interval = $datetime1->diff($datetime2);
  6.  
  7. echo '>';
  8. if($interval >= 0) echo'background-color:#fff';
  9. elseif($interval< -60) echo'background-color:#000';
  10. echo' color:black;">';
  11. echo $interval->format('%R%a');
  12. echo'
  13. </div>


problem chyba leży w tym że $interval nie jest liczbą całkowitą tutaj , czy coś innego?

Ten post edytował Daiszman 6.03.2020, 13:35:21
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. $interval = $datetime1->diff($datetime2)->format('%R%a');


--------------------
Go to the top of the page
+Quote Post
Daiszman
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


mam problem taki że jak chce teraz do $interval dodać np liczbe 22 wyrzuca mi

  1. Warning: A non-numeric value encountered in /var/www/html/


Go to the top of the page
+Quote Post
nospor
post
Post #4





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




To moze pokaz jak ty to dodajesz. Juz tyle czasu na forum moglbys wiedziec jak podawac informacje by uzyskac pomoc


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Daiszman
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


Przepraszam

kod mam tak początek kodu jest w pierwszym poście....

  1. $monitCzasuPracy= 10;
  2. if($interval <= -30 && $doc === "Z") { echo'<img src="ikony/5.png" width="15px" hight="15px";><b>'.$monitCzasu+$monitCzasuPracy.' ! </b></div>';


Ten post edytował Daiszman 11.03.2020, 09:09:36
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




No i gdzie w tym kodzie ty cos dodajesz?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Daiszman
post
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


  1. .$monitCzasu+$monitCzasuPracy.


gdzie $monitCzasuPracy=10
a $monitCzasu jest przyrównany do
  1. $data1 = $doc['dateModified'];
  2. $datetime1 = new DateTime('NOW');
  3. $datetime2 = new DateTime($data1);
  4. $interval = $datetime1->diff($datetime2)->format('%R%a');
  5. $monitCzasu = $interval;
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




poza tym $interval jest obiektem klasy DateInterval wiec niby czemu porownujesz to z liczbami ot tak sobie?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Daiszman
post
Post #9





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


no własnie domyślam się ze o to moze chodzić tutaj , ale czy można go sprowadzić do liczby żeby na nim operacje wykonać?
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




https://www.php.net/manual/en/class.dateinterval.php
Masz tam dosc wyraznie napisane jak dobrac sie do liczb, ktore cie interesuja


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miccom
post
Post #11





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


A zamień datę na timestamp i dodawaj liczby do siebie smile.gif
Chyba najłatwiejsze rozwiązanie smile.gif


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
trueblue
post
Post #12





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Cytat(nospor @ 11.03.2020, 09:22:41 ) *
poza tym $interval jest obiektem klasy DateInterval wiec niby czemu porownujesz to z liczbami ot tak sobie?

Nie jest, bo jest formatowany i otrzymujemy string.


--------------------
Go to the top of the page
+Quote Post
Daiszman
post
Post #13





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


Cytat(miccom @ 11.03.2020, 09:29:12 ) *
A zamień datę na timestamp i dodawaj liczby do siebie smile.gif
Chyba najłatwiejsze rozwiązanie smile.gif

no w sumie - hmmm
aż tak mądry nie jestem ale spróbuję
Go to the top of the page
+Quote Post
trueblue
post
Post #14





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Lepiej sprawdź co zawiera zmienna $doc.
Już w temacie o warunku IF, o tym samym pisaliśmy.

Raz pobierasz wartość z indeksu: $doc['dateModified'], a innym razem porównujesz zmienną ze stringiem: $doc === "Z"
Jeśli zmienna jest tablicą, to na pewno nie porównasz jej ze stringiem, a jeśli jest stringiem, to na pewno nie tablicą.


--------------------
Go to the top of the page
+Quote Post
Daiszman
post
Post #15





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


$doc['dateModified'] jest datą
$doc to jest inna zmienna

mnie interesuje do $interval dodanie określonej liczby tak żeby w momencie gdy wykazuje -30 pokazał -20 jesli np $monitCzasuPracy=10
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




Cytat
Nie jest, bo jest formatowany i otrzymujemy string.

Tam masz tez wlasciwosci klasa takie jak
public integer $y ;
public integer $m ;
public integer $d ;
public integer $h ;
public integer $i ;
public integer $s ;
public float $f ;
public integer $invert ;
public mixed $days ;

poza tym nawet jakbys sie upieral przy funkcji FORMAT() to jaki problem jej powiedziec by zwrocila dni a potem zamienic to na liczbe przy pomocy zwyklego rzutowania (int) ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
trueblue
post
Post #17





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Cytat(nospor @ 11.03.2020, 09:55:58 ) *
To ze nie ogarniasz podstaw klas, nie znaczy ze nie jest tongue.gif

Tam masz tez wlasciwosci klasa takie jak
public integer $y ;
public integer $m ;
public integer $d ;
public integer $h ;
public integer $i ;
public integer $s ;
public float $f ;
public integer $invert ;
public mixed $days ;

Pokazujesz strukturę klasy DateInterval, a nie typ zmiennej $interval, który jest stringiem.
Czyli to: $datetime1->diff($datetime2), a nie to: $interval = $datetime1->diff($datetime2)->format('%R%a');

Cytat(nospor @ 11.03.2020, 09:55:58 ) *
poza tym nawet jakbys sie upieral przy funkcji FORMAT() to jaki problem jej powiedziec by zwrocila dni a potem zamienic to na liczbe przy pomocy zwyklego rzutowania (int) ?

Nie upieram się i nie widzę problemu.
Faktem jest, że swobodnie można przeprowadzić dodawanie na $interval, czyli: $monitCzasu+$monitCzasuPracy


--------------------
Go to the top of the page
+Quote Post
Daiszman
post
Post #18





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

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


Cytat(trueblue @ 11.03.2020, 10:01:52 ) *
Faktem jest, że swobodnie można przeprowadzić dodawanie na $interval, czyli: $monitCzasu+$monitCzasuPracy

HOW?
Go to the top of the page
+Quote Post
nospor
post
Post #19





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




Wg wczesniejszych kodow, $interval jest wynikiem funkcji diff() a wiec jest obiektem klasy DateInterval a nie zadnym stringiem
$interval = $datetime1->diff($datetime2);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
trueblue
post
Post #20





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Pokaż wynik:
  1. var_dump($doc['dateModified']);

oraz:
  1. var_dump($doc);


Cytat(nospor @ 11.03.2020, 10:04:51 ) *
Wg wczesniejszych kodow, $interval jest wynikiem funkcji diff() a wiec jest obiektem klasy DateInterval a nie zadnym stringiem
$interval = $datetime1->diff($datetime2);

A wedle późniejszego kodu w poście #7, który komentowałeś w poście #8, nie jest.


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

2 Stron V   1 2 >
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: 19.08.2025 - 20:22