php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-01-2002, 15:10
Thor
 Newbie
Links : Onlinestatus : Thor ist offline
Registriert seit: Nov 2001
Beiträge: 46
Thor ist zur Zeit noch ein unbeschriebenes Blatt
Thor eine Nachricht über ICQ schicken
Standard

Also ich habe ein geburtsdatum, zB 19.09.1960!
Daraus möchte ich nun das Alter in Jahren bestimmen.
Gibt es irgendwelche einfachen und sinvollen Lösungen?
__________________
/me
Mit Zitat antworten
  #2 (permalink)  
Alt 06-01-2002, 15:42
KinNeko
 Member
Links : Onlinestatus : KinNeko ist offline
Registriert seit: Jan 2001
Beiträge: 273
KinNeko ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn du das Geburtsdatum in einer MySQL Datenbank abgespeichert hast (das Dateformat!) geht es so :
select ((YEAR(CURRENT_DATE)-YEAR(birthdate)) - (RIGHT(CURRENT_DATE,5)<RIGHT(birthdate,5))) as age FROM tabelle
(frei kopiert aus dem manual

Wenn du es nur im europäischen Format vorliegen hast geht es so..
$jahr = 1960 // mußt du einfach nur irgendwie aus dem String auslesen
$monat = 9 // dito
$tag = 19 // dito
$alter = date(Y)- $jahr;
if (date(n) < $monat) {
$jahr = $jahr - 1; // wenn der Geburtsmonat noch nicht erreicht ist
} else {
if (date(n) == $monat && date(d) < $tag) {
$jahr = $jahr - 1;
}
else { // optional
if (date(n) == $monat && date(d) == $tag) {
echo "Happy Birthday";
}

Gibt aber sicher eine einfachere Lösung..so wie beim datenbankformat..fällt mir allerdings nicht ein.
Mit Zitat antworten
  #3 (permalink)  
Alt 06-01-2002, 16:33
hand
 PHP Expert
Links : Onlinestatus : hand ist offline
Registriert seit: Dec 2001
Ort: Kärnten
Beiträge: 3.138
hand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
<?
$gebdate = "01.01.1920";
$alter = 0; 

// Umbauen Datum in die Form JJJJMMTT
$gebdt	= explode(".", $gebdate); 
$gebdt	= $gebdt[2].$gebdt[1].$gebdt[0];
$now	= date("Ymd", time());

if (substr($now,4) ==  substr($gebdt,4)) {
	$gratulation = "und hat heute Geburtstag";
}

if  ($gebdt > $now) {
	print "Geburtsdatum $gebdate ist ungültig<br>\n";
} else {
	WHILE ($gebdt < $now - 9999) { 
		$alter++; 
		$gebdt = $gebdt + 10000;
	}
	print "Person mit Geburtsdatum $gebdate ist $alter Jahre alt $gratulation<br>\n";
}
?>
Mit Zitat antworten
  #4 (permalink)  
Alt 06-01-2002, 21:21
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also wenn Du nur das Alter in Jahre wissen willst, dann:
<?
$age=explode(".",$gebdat);
$alter = date("Y",time())-$age[2];
?>

Wenns aus ner DB im date format kommt dann:
"SELECT DATE_FORMAT(CURRENT_DATE,"Y") - DATE_FORMAT(COLNAME,"Y") AS age;
Mit Zitat antworten
  #5 (permalink)  
Alt 06-01-2002, 21:33
Sky
 PHP Senior
Links : Onlinestatus : Sky ist offline
Registriert seit: Jul 2001
Beiträge: 1.796
Sky ist zur Zeit noch ein unbeschriebenes Blatt
Sky eine Nachricht über ICQ schicken
Standard

Da ist dann allerdings ne Toleranz von +/- 364 Tagen dabei...
__________________

CAT Music Files
Mit Zitat antworten
  #6 (permalink)  
Alt 06-01-2002, 21:42
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

stimmt vergesst es...
so is besser:
<?
$gebdat = "1.1.1990";
$age=explode(".",$gebdat);
$alt = mktime(0,0,0,$age[1],$age[0],$age[2]);
$alter = date("Y",time())-date("Y",$alt);
print $alter;
?>


[Editiert von MelloPie am 06-01-2002 um 20:51]
Mit Zitat antworten
  #7 (permalink)  
Alt 07-01-2002, 14:12
KinNeko
 Member
Links : Onlinestatus : KinNeko ist offline
Registriert seit: Jan 2001
Beiträge: 273
KinNeko ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann das mal einer probieren ob das geht und wenn ja in Codeschnipsel übernehmen ?
Ich bräuchte das auch noch einmal und dort findet man es schneller wieder.
Am besten beide Lösungen.
Mit Zitat antworten
  #8 (permalink)  
Alt 09-01-2002, 20:49
Titus
 PHP Master
Links : Onlinestatus : Titus ist offline
Registriert seit: Jan 2001
Ort: im Rodgau
Beiträge: 4.292
Titus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von MelloPie
<?
$gebdat = "1.1.1990";
$age=explode(".",$gebdat);
$alt = mktime(0,0,0,$age[1],$age[0],$age[2]);
$alter = date("Y",time())-date("Y",$alt);
print $alter;
?>
Da ist immer noch ein kleiner Denkfehler drin: Du subtrahierst wieder nur die Jahre.

<?
$gebdat = "1.1.1990";
$geb=explode(".",$gebdat);
//Bis hierhin ist das ok. Aber was jetzt gebraucht wird, ist das aktuelle Datum im gleichen Format:
$nowdat = date('d.m.Y');
$now = explode('.', $nowdat);
// jetzt die Differenz der Jahre:
$alter = $now[2]-$geb[2];
// Wenn das Geburtsdatum noch nicht erreicht ist, muss nun noch ein Jahr abgezogen werden:
if ("$now[1]$now[0]"<"$geb[1][$geb[0]") $alter--;
//nu stimmt´s
print $alter;
?>
--------
aber es gibt (wie meistens) noch eine kürzere Variante:
<?
$gebdat = "1.1.1990";
$now = date ('Ymd');
$age=explode(".",$gebdat);
$geb = $age[2]*10000+$age[1]*100+$age[0];
$alter = floor(($now-$geb)/10000);
print $alter;
?>

Hier werden die zwei Daten (das aktuelle und der Geburtstag) einfach im Format JJJJMMTT als Zahlen benutzt und von einander abgezogen. Ist das aktuelle Datum (ohne Jahr) kleiner als das Geburtsdatum (ohne Jahr), so wird die Jahresdifferenz schon automatisch um eins verringert.
Anschließend sorgt die Division durch 10000 und das Abrunden mit floor dafür, dass Monate und Tage wegfallen - bingo!
__________________
mein Sport: mein Frühstück: meine Arbeit:

Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.
Mit Zitat antworten
  #9 (permalink)  
Alt 09-01-2002, 21:13
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Stimmt globaler Denkfehler aber so sollte es dann doch gehen, oder?
<?
$gebdat = "1.1.1990";
$age=explode(".",$gebdat);
$alt = mktime(0,0,0,$age[1],$age[0],$age[2]);
$alter = date("Y",time()-$alt);
print $alter;
?>
Mit Zitat antworten
  #10 (permalink)  
Alt 12-10-2006, 13:21
matze91
 Newbie
Links : Onlinestatus : matze91 ist offline
Registriert seit: Oct 2004
Ort: Hamburg
Beiträge: 3
matze91 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Gibt es die Möglichkeit den Code soweit zu erweitern das auch ausgegeben wird wieviel Monate und Tage seit dem Geburtstag vergangen sind? Z.B. xyz ist 32 Jahre 3 Monate und 10 Tage alt.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:52 Uhr.