Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak obliczyć wiek po dacie urodzin funkcją PHP?, czy istnieje metoda obliczenia wieku po przez php i wypisanie: 49 lat
AmyLokmart
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

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


Mam funkcję: date_modify(), date_format(), date_date_set() i substr()

Zbudowałam taki kod:

  1. // Separate parts date for read database
  2. $month->date_date_set = "%m";
  3. $days->date_date_set = "%d";
  4. $year->date_date_set = "%y";
  5. // Start count old
  6. $date = date_create("1974-11-11");
  7. date_modify($date,"-2022 year" . date_date_set('/*%y*/') . " -11 month " . date_date_set('/*%m*/') . "-11 days" . date_date_set('/*%d*/'));
  8. echo "Mam " . substr(date_format($date,"Y"), 3) . " lat.";


Wypisuje co prawda: "Mam 49 lat.", ale po zmianie treści, które zawierają inne dane związane z datą urodzin odczytywane w całości z bazy danych (to znaczy CAŁĄ DATE: 1974-11-11, a nie jej części np: 1974 rok z jednego wiersza, 11 miesiąc z innego wiersza, 11 dzień jeszcze z innego wiersza) - chciałabym, aby działało obliczenie wieku w całości, najlepiej bez ręcznych zmian wywoływanych przez funkcję date_modify() oraz bez stosowania oddzielnych zmiennych dla części składowych daty. Nie podoba mi się też użycie funkcji substr() -> została ona użyta na siłę, by wymóc końcowy wynik niezgrabnego obliczenia: "-0049".

Czy ktoś wie jak to zmodyfikować, aby funkcja z podanej daty urodzin obliczyła wiek osoby, ale w całości?

Dziękuję za sugestie, podpowiedzi, ewentualne rozwiązania (IMG:style_emoticons/default/smile.gif)

Ten post edytował AmyLokmart 27.04.2022, 18:32:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





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




Cytat
Data urodzin w bazie danych zapisana jest za pomocą metody: varchar, choć wcześniej miałam ustawione na metodę: datetime (jednak, kiedy miałam tak wcześniej ustawione to baza danych przesyłała po odczycie "napakowaną datę" to znaczy 00 00 00 2022-11-11 14:00:00:00 - zbijałam ciąg funkcjami php i w pewnym momencie uznałam, że to za bardzo komplikuje mi obliczenia

To nie mozliwe ze datetime zwracalo ci jakies 00 00 00 na poczatku. Zwyczajnie zrobilas jakis blad
Poza tym skoro to urodziny czyli data to nie zadne datetime tylko date

Cytat
zabiera więcej pamięci dla bazy danych, a ja chcę zapisać 2 miliony dat urodzin, które mam na razie w pliku.

Kolejna bzdura. No po co wymyslac takie rzeczy nie znajac sie w ogole w temacie?
Pole typu DATE zajmuje tylko 3 bajty, podczas gdy VARCHAR do zapisania daty zajmie ci 10 bajtow czyli ponad 3 razy wiecej. Wiec jakim cudem stosujac VARCHAR oszczedzasz pamiec?


Cytat
Nie umiem zrobić takich rzeczy,które rzadko są stosowane. Dopiero wtedy interesujemy się rzadko stosowanymi rzeczami, kiedy nam są potrzebne. A przecież lepiej nauczyć się później niż w ogóle prawda? smile.gif

I kolejny blad, gdyz operacje na datach sa dosc czesto stosowane (IMG:style_emoticons/default/wink.gif)

Cytat
Wracając do tematu. Skoro datę masz jako zwykły string, to rozbij ją sobie regexem po stronie PHP lub zapytaniem w SQL na rok, miesiąc i dzień, a później zerknij tutaj: https://www.php.net/manual/en/class.datetimeimmutable.php wink.gif

Salvation no miejze litosc. Po grzyba tam jakis regexp a juz tymbardziej skoro i tak potem proponbujesz obiekt DATETIME ktory spokoknie wezmien 2022-11-11 bez zadnego regexpa
Poza tym rozwiazania juz podano na samym poczatku
Go to the top of the page
+Quote Post

Posty w temacie
- AmyLokmart   [PHP]Jak obliczyć wiek po dacie urodzin funkcją PHP?   27.04.2022, 18:29:28
- - trueblue   Nie wiem czy Twój mentor akceptuje krótkie i stoso...   27.04.2022, 18:43:29
- - AmyLokmart   "trueblue", a możesz napisać mi jak by w...   27.04.2022, 19:21:24
|- - trueblue   Cytat(AmyLokmart @ 27.04.2022, 20:21...   27.04.2022, 20:31:19
- - Salvation   A jak masz tą datę zapisaną w bazie danych? Rozumi...   27.04.2022, 19:24:19
- - AmyLokmart   Data urodzin w bazie danych zapisana jest za pomoc...   27.04.2022, 19:37:43
- - phpuser88   [PHP] pobierz, plaintext $date = "1974-11-11...   27.04.2022, 20:05:38
- - gino   date w bazie zapisuje się się pomocą typu DATE, ża...   27.04.2022, 20:16:53
- - Salvation   Cytat(AmyLokmart @ 27.04.2022, 20:37...   27.04.2022, 20:25:01
- - nospor   CytatData urodzin w bazie danych zapisana jest za ...   27.04.2022, 20:30:08
- - Salvation   Fakt, za dużo pracy na dzisiaj ewidentnie... Aczko...   27.04.2022, 20:35:17
|- - nospor   Cytat(Salvation @ 27.04.2022, 20:35:1...   27.04.2022, 20:36:42
- - AmyLokmart   Dziękuję chłopaki za podpowiedzi i sugestie. Odn...   27.04.2022, 21:24:28
- - gino   O kurde (to do kodu).... Sorki, ale jeżeli: ...   27.04.2022, 21:30:20
- - trueblue   Nie zaskoczyłaś mnie.   27.04.2022, 21:30:26
- - nospor   CytatJeśli data zapisana będzie za pomocą date lub...   27.04.2022, 21:35:35
- - AmyLokmart   Dzięki chłopaki za Wasze wypowiedzi i pomoc. Przed...   1.05.2022, 16:48:17
- - nospor   CytatKochany "nespor" dzięki za uszczypl...   1.05.2022, 18:30:57


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 02:44