Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]pozostało dni
SUICIDE
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 31.10.2012
Skąd: Gorzów Wlkp

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


Witam.
Zacznę od tego że szukałem podobnych tematów tutaj i nie znalazłem.

W bazie sql w tabeli usługi mam kolumnę o nazwie "wazne_do"
typ tej kolumny to ->date -> zapisany format -> np. 2015-11-06
Ta data powyżej jest obliczana z kolumny "data" o typie: timestamp /CURRENT_TIMESTAMP/ON UPDATE CURRENT_TIMESTAMP - czyli daty prowadzanie rekordu do bazy + 30dni


Chciałbym obliczyć ile pozostało dni do końca ale nie wiem czy czasem nie muszę zapisywać daty w formie unixowej.
a wtedy pobierać aktualną datę za pomocą time(), która wyświetla datę w formacie unixowym.
I te daty odejmować od siebie.

Ale wolałbym zostać przy timestamp/ current_timestamp/ on update current_timestamp.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Skoro wiesz, że "wazne_do" to zawsze data utworzenia + 30 dni to usuń ją z tabeli. Następnie pobierz date, przetwórz za pomocą strtotime dodaj 30 dni (60 sekund * 60 minut * 24 godziny * 30 dni) i odejmij aktualny czas (time) - rezultatem będzie "ile pozostało dni do końca" np.

  1. $data_utworzenia = '2015-10-24';
  2. $pozostalo_s = strtotime($data_utworzenia) + (60 * 60 * 24 * 30) - time();


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





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


http://php.net/manual/en/datetime.format.php

  1. $date1 = new DateTime('2015-11-06'); //data poczatkowa
  2. $date2 = new DateTime(date("Y-m-d", $CzasUNIX)); //druga data, jeżeli UNIX
  3. $interval = date_diff($date1, $date2); //porównujemy
  4. echo $interval->format('zostało %R% dni'); //zostało 30 dni
Go to the top of the page
+Quote Post
SUICIDE
post
Post #4





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 31.10.2012
Skąd: Gorzów Wlkp

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


hmmmmmmm

  1. $date1 = $row[6] // Data 2015-10-11
  2. $pozostalo_s = strtotime($date1) - time();// wynik powinien wyjść 2dni
  3. echo $pozostalo_s;


Pokazuje "-1444422153"

Ten post edytował SUICIDE 9.10.2015, 21:26:08
Go to the top of the page
+Quote Post
markuz
post
Post #5





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Zrób var_export($date1) i pokaż wynik
  1. echo ceil((strtotime('2015-10-11') - time()) / 86400);


Ten post edytował markuz 9.10.2015, 21:29:15


--------------------
Go to the top of the page
+Quote Post
SUICIDE
post
Post #6





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 31.10.2012
Skąd: Gorzów Wlkp

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


  1. echo ceil((strtotime('2015-10-11') - time()) / 86400);

Teraz pokazało 2 dni smile.gif

  1. echo ceil((strtotime($row['data_do') - time()) / 86400);


pokazuje mi -16717


i coś znowu z bazą się dzieje bo krzaki zamiast pl znaków są. znowu będę musiał baze importować.

Ten post edytował SUICIDE 9.10.2015, 21:43:22
Go to the top of the page
+Quote Post
markuz
post
Post #7





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Zrób var_dump($row) i pokaż wynik.


--------------------
Go to the top of the page
+Quote Post
SUICIDE
post
Post #8





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 31.10.2012
Skąd: Gorzów Wlkp

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


Ok dziękuję bardzo za pomoc. Musiałem trochę odpocząć i na spokojnie sobie to przeanalizować.

Pobrałem z bazy datę utworzenia zgłoszenia/zamówienia + (60 * 60 * 24 * 30) - time()) / 86400)

Wszystko pięknie działa.

Ten post edytował SUICIDE 10.10.2015, 10:54:58
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 Aktualny czas: 22.08.2025 - 06:55