Hallo zusammen, ich versuche mich neuerdings etwas in JavaScript hineinzudenken und könnte da Hilfe brauchen. Ich erhoffe, dass ich mir durch Wunschfunktionen bzw die Umsetzung ein wenig leichter tue den Aufbau zu verstehen und bin deshalb bei diesem Fall gelandet, der mich mitlerweile Tage beschäftigt, ohne der Lösung nahe zu kommen.
Ich würde gerne eine Funktion bauen, die mir eingegebene Daten vom aktuellen Datum abzieht und beschreibt, wie viele Tage vergangen sind. Mir ist klar, dass ich eine Formel benötige, die das heutige Datum erhält und davon eine Variable abzieht, die dann im Text definiert werden müsste. Als Beispiel: "Der erste Eintrag ist vom 03.03.2019 ->Variable das ist jetzt (heute - Variable) her (die Millisekunden müssten natürlich umgerechnet werden) Der zweite Eintrag ist vom 04.04.2019 ->Variable das ist jetzt (heute - Variable) her" Ich kam der Lösung so nahe, dass die Tage ausgerechnet wurden, aber darunter "undefined" ausgegeben wurde. Nach über einer Stunde umstellen und probieren das weg zu bekommen hab ich aus Frust wieder alles gelöscht.
Wenn jemand eine Lösung für mich hätte, die funktioniert, dann könnte ich damit etwas rumprobieren, um mein Verständnis weiter auszubauen und besser eigenständig Lösungen zu erarbeiten.
Ich habe soeben ein funktionierende Antwort gefunden, die mir vorerst genügt. Sobald ich mich in das Thema ID und Co vernünftig rein denken kann und weiß, wie ich das da einbinden kann, bau ich es halt nachträglich ein.
"Altersberechnung Beispiel:
<script type="text/javascript"> var geburtstag = 14; var geburtsmonat = 2; var geburtsjahr = 1997; var d = new Date(geburtsjahr, geburtsmonat -1, geburtstag); var sekunden_geb = d.getTime(); var heute = new Date(); var sekunden_heute = heute.getTime(); var alter = sekunden_heute - sekunden_geb; var jahr_in_ms = 365.25 * 24 * 60 * 60 * 1000 ; document.write("Alter in Jahren (ungefähr): " + alter / jahr_in_ms + " (ungefähr) <br>"); document.write("Alter in Jahren: " + Math.floor(alter / jahr_in_ms) + " (abgerundet)"); </script>
Ausgabe: Alter in Jahren: 22.399204126771362 (ungefähr) Alter in Jahren: 22 (abgerundet)"
Dieses Script habe ich auf: http://www.just-design.de/JavaScript/kap3/Date2.html gefunden, habe die "365,25 *" entfernt und habe so meine Anzahl der Tage. Jetzt werde ich mich mal genauer damit auseinandersetzen und daraus lernen :-D
Ich habe nun ein Upgrade. Dadurch wird die verstrichene Zeit in Jahren und Tagen ausgegeben, sofern es schon Jahre sind. Leider werden Schaltjahre nicht berücksichtigt, was die Sache leicht ungenau werden lässt, allerdings lässt sich das sicher mal ausbauen.
<script type="text/javascript"> var releaseTag = 22; var releaseMonat = 02; var releaseJahr = 2012; var d = new Date(releaseJahr, releaseMonat -1, releaseTag); var sekundenRelease = d.getTime(); var heute = new Date(); var sekundenHeute = heute.getTime(); var alter = sekundenHeute - sekundenRelease; var tagInMs = 24 * 60 * 60 * 1000 ; var verstrTage = Math.floor(alter / tagInMs); var jahre = Math.floor(verstrTage / 365); var restTage = Math.floor(verstrTage % 365); if (verstrTage >= 365) { document.write("(vor " + jahre + " Jahr(en) und " + restTage + " Tagen)"); } else { document.write("(vor " + verstrTage + " Tagen)"); } </script>
Wieder ein Upgrade, das dürfte nun das letzte sein. Im Kopf (<head> </head>) steht nun die Funktion, die dann im <body> aufgerufen wird. In Klammern steht das Datum (Tag,Monat,Jahr), das dann in der Funktion verwendet wird. Somit ist die Sache etwas aufgeräumter und beliebig oft verwendbar. Die alten Variablen (releaseTag usw.) habe ich zur Orientierung stehen lassen und auskommentiert. Die If, else if Abfrage formatiert die Ausgabe nach Ein- und Mehrzahl (Jahr/Jahre, Tag/Tage) Viel Spaß damit, für alle, die dafür Verwendung finden.
<head> <script> function dateRun(releaseTag, releaseMonat, releaseJahr) { //var releaseTag = tt; //var releaseMonat = MM; //var releaseJahr = yyyy; var d = new Date(releaseJahr, releaseMonat -1, releaseTag); var sekundenRelease = d.getTime(); var heute = new Date(); var sekundenHeute = heute.getTime(); var alter = sekundenHeute - sekundenRelease; var tagInMs = 24 * 60 * 60 * 1000 ; var verstrTage = Math.floor(alter / tagInMs); var jahre = Math.floor(verstrTage / 365); var restTage = Math.floor(verstrTage % 365); if (verstrTage >= 365 && jahre > 1 && restTage > 1) { return("(vor " + jahre + " Jahren und " + restTage + " Tagen)"); }else if (verstrTage >= 365 && jahre == 1 && restTage > 1) { return("(vor " + jahre + " Jahr und " + restTage + " Tagen)"); }else if (verstrTage >= 365 && jahre > 1 && restTage == 1) { return("(vor " + jahre + " Jahr und " + restTage + " Tagen)"); }else if (verstrTage >= 365 && jahre == 1 && restTage == 1) { return("(vor " + jahre + " Jahr und " + restTage + " Tag)"); }else if (verstrTage < 365 && jahre == 0 && restTage == 1) { return("(vor " + verstrTage + " Tag)"); }else if (verstrTage < 365 && jahre == 0 && restTage > 1) { return("(vor " + verstrTage + " Tagen)"); }else if (verstrTage < 0) { return(""); }} </script> </head>