Autor Thema: Alter berechnen  (Gelesen 30240 mal)

Offline Notestime

  • Senior Mitglied
  • ****
  • Beiträge: 358
  • Geschlecht: Männlich
  • ... time for new ways
    • HoCaS
Alter berechnen
« am: 19.09.04 - 09:21:42 »
Hallo!

Wie kann ich in Formelsprache ein Alter berechnen?

Also ich hab in Feld1 das Geburtsdatum als Date/Time Value und ich möchte im brechneten Feld2 das aktuelle alter stehen haben.

Kann mir jemaand helfen?

Danke und Gruß
bernd
Admin & Designer,
6 Server (4xAIX, 2xLinux),
850 Clients

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Alter berechnen
« Antwort #1 am: 19.09.04 - 09:38:58 »
_dateOfBirth:="21.10.1959";
_age:=(@TextToNumber(@Text(@TextToTime("Today") - @Date(@TextToTime(_dateOfBirth)))) / 86400) / 365;
@Prompt([Ok];"Alter";@Text(@Integer(_age)))
« Letzte Änderung: 19.09.04 - 09:50:36 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Notestime

  • Senior Mitglied
  • ****
  • Beiträge: 358
  • Geschlecht: Männlich
  • ... time for new ways
    • HoCaS
Re:Alter berechnen
« Antwort #2 am: 19.09.04 - 18:08:54 »
Danke!!! Funktioniert Super!
 :) :) :)
Admin & Designer,
6 Server (4xAIX, 2xLinux),
850 Clients

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:Alter berechnen
« Antwort #3 am: 20.09.04 - 13:50:44 »
Aber nur wenn du in diesem Jahr nach dem  12.01.1959 geboren worden bist.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re:Alter berechnen
« Antwort #4 am: 20.09.04 - 15:29:30 »
Um keine Probleme mit Schaltjahren und älteren Leuten zu bekommen, kann man das auch wie folgt lösen:

------

 _dateOfBirth:=@TextToTime("21.10.1959");
_age:=@If(@Month(@Today) > @Month(_dateOfBirth);@Year(@Today) - @Year(_dateOfBirth);
    @Month(@Today) < @Month(_dateOfBirth);@Year(@Today) - @Year(_dateOfBirth)-1;
    @If(@Day(@Today) >= @Day(_dateOfBirth);@Year(@Today) - @Year(_dateOfBirth);@Year(@Today) - @Year(_dateOfBirth) - 1));
@Prompt([Ok];"Alter";@Text(@Integer(_age)))

------

Viele Grüße
Harry
« Letzte Änderung: 20.09.04 - 15:32:32 von HarryB »
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline billygates

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • Ich kann 'proprietär' nicht mehr hören!
Re: Alter berechnen
« Antwort #5 am: 16.01.08 - 11:02:54 »
Oder auch so (als Formel in einem berechneten Datumsfeld):

datum := [21.10.1959];
tmp1   := @Date(@Year(@Now);@Month(datum);@Day(datum));
tmp2   := (@Now-tmp1)/86400;
tmp3   := @Year(@Now) - @Year(datum);
@If(tmp2 > -1; tmp3; tmp3 - 1)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alter berechnen
« Antwort #6 am: 19.01.08 - 00:46:46 »
Achtung - in unten stehender Formel ist ein böser Bug!
Im Beitrag 21 http://atnotes.de/index.php?PHPSESSID=7594h1jjplgptfnvqalc3tcal4&topic=18281.msg359788#msg359788
wird eine korrigierte Fassung dargestellt und auf das Verhalten von @Date, dem 29. Februar und Nicht-Schaltjahren hingewiesen.

BK, 28.02.2013



Warum nicht als Zweizeiler?  ;)

BirthDay sei das Feld mit dem Geburtsdatum, ActDate das Feld mit dem aktuellen Bezugsdatum (was man ggf. durch @Today ersetzen kann). Age ist (in diesem Fall) das berechnete Feld zur Ausgabe des Alters.

Die erste Zeile des berechneten Feldes prüft zunächst, ob man überhaupt etwas berechnen kann. Dies ist ebenso in einer Aktion mit Ausgabe via @Prompt verwendbar.

Die zweite Zeile berechnet stur das die Jahre von Birthdate bis ActDate. Dumm, wenn Birthday = 11.07.1990 und ActDate = 19.01.2008 - die Person ist dann (ungerechtfertigterweise) schon wehrdienstpflichtig.

Die zweite Zeile normiert Birthday dann auf das Jahr von ActDate (aus 11.07.1990 wird so 11.07.2008), vergleicht dies mit ActDate und reduziert das Alter dann gegebenenfalls um ein Jahr. Ergebnis: Mein Sohn darf heute noch nicht zum Bund einberufen werden  ;D

Code
@If (!@IsTime (Birthday) | !@IsTime (ActDate); @Return (Age); "");
_Age1 := @Year (Actdate) - @Year (Birthday);
@If (@Date (@Year (ActDate); @Month (Birthday); @Day (Birthday)) > ActDate; _Age1 - 1; _Age1)

Bernhard

PS: Mehr dazu auf dem EntwicklerCamp am 27. Februar 2008
« Letzte Änderung: 28.02.13 - 19:18:09 von koehlerbv »

Offline billygates

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • Ich kann 'proprietär' nicht mehr hören!
Re: Alter berechnen
« Antwort #7 am: 24.01.08 - 14:42:52 »
Zweizeiler??? Also ich kann zählen und komme auf 3!  :)

klaussal

  • Gast
Re: Alter berechnen
« Antwort #8 am: 24.01.08 - 14:44:27 »
Wenn man bei 0 anfängt zu zählen, dann passt es wieder...  :P

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alter berechnen
« Antwort #9 am: 24.01.08 - 14:46:40 »
Die erste Zeile gehört ja "eigentlich" nicht dazu und dient nur der Ordnung und Sauberkeit im Schlachthof  ;)
Und Zeile 2 kann man mit Zeile 3 kombinieren (und dann das Konstrukt aus der neuen Zeile statt der "" in der ersten Zeile einsetzen. Dann hat man einen Einzeiler (kann ihn aber nicht mehr lesen  ;D)

Bernhard

Offline billygates

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • Ich kann 'proprietär' nicht mehr hören!
Re: Alter berechnen
« Antwort #10 am: 24.01.08 - 15:05:08 »
So in etwa also:

datum := [21.10.1959];
@If(@Now-@Date(@Year(@Now);@Month(datum);@Day(datum)))/86400 > -1; @Year(@Now) - @Year(datum); @Year(@Now) - @Year(datum) - 1)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alter berechnen
« Antwort #11 am: 24.01.08 - 15:21:37 »
Da fehlt die entscheidende Prüfung auf @IsTime. Davor muss also noch
@If (!@IsTime (Birthday) | !@IsTime (ActDate); @Return (Age); ..............)

Offline billygates

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • Ich kann 'proprietär' nicht mehr hören!
Re: Alter berechnen
« Antwort #12 am: 24.01.08 - 16:07:19 »
Uah, ich bin müde...

Offline Fineas

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • PCLP Dev/Admin 5,6,7,8
Re: Alter berechnen
« Antwort #13 am: 12.02.08 - 10:38:43 »
Als Einzeiler hätte ich auch noch eine simple Lösung im Angebot:

@If(@Month(d2) * 31 + @Day(d2) >= @Month(d1) * 31 + @Day(d1); @Year(d2)-@Year(d1); @Year(d2)-@Year(d1) - 1 )

Zwei Datumsfelder d1 und d2, ein berechnetes Ergebnisfeld mit der Formel.

Selbstverständlich korrekterweise mit Validierung:

@if(@IsTime(d1) & @IsTime(d2); ... ;"gibts nicht!")

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Alter berechnen
« Antwort #14 am: 07.10.09 - 14:29:59 »
Und was haltet ihr von meiner Einzeilerlösung?

@If(geburtsdatum="";"unbekannt";@Round(((@Year(@Today)*10000+@Month(@Today)*100+@Day(@Today))-(@Year(Geburtsdatum)*10000+@Month(Geburtsdatum)*100+@Day(Geburtsdatum)))/10000))
Thomas von der IuK

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alter berechnen
« Antwort #15 am: 07.10.09 - 16:31:05 »
Nix.

Bernhard

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Alter berechnen
« Antwort #16 am: 07.10.09 - 16:46:56 »
Schade.  :'(

Und warum nicht?
Thomas von der IuK

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alter berechnen
« Antwort #17 am: 07.10.09 - 16:53:10 »
Du änderst die Dimensionen von Datums-/Zeit-Werten und rundest dann. Dazu Schaltjahre, @Year ("unbekannt") kommt gar nicht gut und ... wird mir jetzt zu lang.

Bernhard

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Alter berechnen
« Antwort #18 am: 07.10.09 - 17:16:50 »
Ups,
das kommt davon, wenn man sich zu einem Schnellschuss hinreissen lässt und auswendig eine alte Idee wieder aufwärmt, die ich in einer berechneten Spalte einer Ansicht verwende. Passt daher nicht ganz zu der Ausgangsfrage mit den Feldern, muss ich zugeben.

Natürlich darf ich nicht kaufmännisch runden, sondern muss immer abrunden.

Also
@If(geburtsdatum="";"unbekannt";@integer(((@Year(@Today)*10000+@Month(@Today)*100+@Day(@Today))-(@Year(Geburtsdatum)*10000+@Month(Geburtsdatum)*100+@Day(Geburtsdatum)))/10000))

Und du meinst, das funktioniert bei Schaltjahren nicht? ... Muss ich echt mal nachprüfen, bisher war ich der Meinung dass das klappt. Aber jetzt bin ich schon etwas verunsichert ... ob ich heute Nacht gut schlafe?

 ;)
« Letzte Änderung: 07.10.09 - 17:18:28 von iukhdh »
Thomas von der IuK

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alter berechnen
« Antwort #19 am: 07.10.09 - 23:20:23 »
Thomas, Du bist auf dem falschen Dampfer.

Ad a) Hier im Thread wurde gutes bereits gepostet und entsprechend bewertet. Du treibst jetzt eine neue Sau durchs Dorf. Wozu? Zur Überprüfung durch uns - das ist okay und sicherlich auch Deine Intention. Das wäre gut.

Ad b) Deine Formel ist ... untauglich. Wenn Martin Leyrer Dein Post bisher schon gelesen hätte, würde er vermutlich mit einem "Schrei" antworten: "***BERNHARD***!!!" Weil:
Man verarbeitet Datums-/Zeitwerte *IMMER* als Datums-/Zeitwerte und "verwurstet" diese nicht.

Der Murks geht los mit
Code
@If(geburtsdatum="";"unbekannt";
Das Item Geburtsdatum sollte (für den Rest Deines Codes) ein Datums-/Zeitwert sein. Und dann prüftst Du gegen einen **STRING**? Geht's noch? Das geht dank der Freundlichkeit von Notes in diesen Dingen x mal gut - bei x + 1 knallt es dann: Weit hergeholt, aber (auch) in Notes möglich: Dort steht kein Datums-/Zeitwert oder auch nicht "nichts" (scheinbar!!), sondern "An einem schönen Tag im Mai". Da scheppert es dann heftig - obwohl das doch so schön formuliert war  ;D

Der Murks geht weiter mit der Alternative: Nix Geburtsdatum, also wird mit dem String "unbekannt" "gerechnet". Hast Du das schon mal ausprobiert)? @Year ("unbekannt")?

Ich finde das Einbringen Deiner Idee sehr gut. Das ist einer der Dinge, wofür wir hier bei AtNotes stehen - Dinge diskutieren. Du betreibst das in einer hervorragenden Art und Weise (und wir alle wissen, dass Notes-Programmierung gar nicht Dein Hauptaufgabengebiet ist). Bleib uns bitte in dieser Art gewogen. Bitte! Aber Dein geposteter Code ist einfach ... vollkommen unbrauchbar.

Ich hoffe sehr, Du verstehst meine Replik (bitte) nicht falsch.

Bernhard

PS: Vor 15 oder 16 oder 17 Jahren habe ich mir genau mit einer solchen Idee wie Deiner ganz übel ein "Kuckucksei" ins Nest gelegt. Damals gab es aber AtNotes oder vergleichbares noch nicht  ;)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz