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
AmyLokmart
post
Post #2





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

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


Dziękuję chłopaki za podpowiedzi i sugestie. (IMG:style_emoticons/default/smile.gif)

Odnośnie ustawień w bazie danych co do metod: date i datetime - Nie potrzebuję zapisywać daty urodzin w formatach obsługiwanych po przez te metody, ponieważ założenie skryptu ma działać w string'u. Właśnie to odkryłam w mojej aplikacji. Jeśli data zapisana będzie za pomocą date lub datetime wówczas nie będę mogła wykonać innych funkcji w aplikacji i przyłączyć dodatkowych informacji do zmiennych. Samo date lub datetime, kiedy wykonuje osobno to działa bez zarzutu (IMG:style_emoticons/default/smile.gif) Dlatego postanowiłam zmienić na varchar. Skoro varchar zabiera więcej pamięci zapisując mniej niż date i datetime to chyba jestem głupia z logicznego myślenia. Pomijając to zastanowiłam się nad skryptem php i napisałam tak:

  1. // Actual date
  2. $date_2 = date_create(date('Y-m-d'));
  3. // Read Parser Date from string
  4. $date_1 = date_create(str_replace('-->', '', trim(ltrim(rtrim(strstr(strstr(str_replace('<div class="hit__name">', '<!--', str_replace('</div></div>', '-->', str_replace('<div class="hit__details hit__details--knowForFilm">', '<!--', str_replace('<span class="hit__personBirthDate" data-birthdate="', '', str_replace('"></span>', '', chop($actors_base[1]['date'])))))), '<!--<div', true), '-->', false), ' '), ' '), ' ')));
  5. $diff = date_diff($date_1, $date_2);
  6. // Separate Year to OLD
  7. $summary_separate = $diff->format("%a")/365+1;
  8. print "Wiek: " . strstr($summary_separate, '.', true) . " lat<br />";


W zmiennej $date_1 występuje:

  1. date_create(str_replace('-->', '', trim(ltrim(rtrim(strstr(strstr(str_replace('<div class="hit__name">', '<!--', str_replace('</div></div>', '-->', str_replace('<div class="hit__details hit__details--knowForFilm">', '<!--', str_replace('<span class="hit__personBirthDate" data-birthdate="', '', str_replace('"></span>', '', chop($actors_base[1]['date'])))))), '<!--<div', true), '-->', false), ' '), ' '), ' ')));


Powyższa funkcja odczytuje dane string'u po przez zmienną $actors_base[1]['date'], z którego usuwane są wybrane fragmenty kodu HTML. Zamiast tego można wstawić: date_create('1974-11-11');

Poniżej mój kod php:

  1. // Actual date
  2. $date_2 = date_create(date('Y-m-d'));
  3. // Read Parser Date from string
  4. $date_1 = date_create('1974-11-11');
  5. $diff = date_diff($date_1, $date_2);
  6. // Separate Year to OLD
  7. $summary_separate = $diff->format("%a")/365+1;
  8. print "Wiek: " . strstr($summary_separate, '.', true) . " lat.<br />";


Działa tak jak chciałam i do tego jak zmieniam kontent to także działa i liczy wiek bez błędów (IMG:style_emoticons/default/smile.gif)
Działania na bazie z DIFF-coś tam sobie odpuszczę.

Pozdrawiam.
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: 16.10.2025 - 20:45