Hey Leute ich habe mal wieder ein problem iich habe keine ahnung wie ich das datum in jahre umrechne kann mir da mal wer helfen ?
Datum in Jahre umrechnen
- CeLeBrAiGoN
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Bei was umrechnen? wie umrechnen mach mal ein bsp wie du haben möchtest...
-
angenommen ich bin am 1.01.2000 geboren und geb das im dialog ein soll es die jahre speichern sprich 12 speichern
-
Datum-Jetzt - Datum = ΔDatum
-
Du solltest den Inputtext mit Sscanf Splitten und dann kannst du Tag,Monat,Jahr herrausfiltern. Dann rechnest du Das Datum - das Jetzige und wenn der Monat und tag oder nur monat größer ist als unser jetziges datum also du z.B. 12.12.2000 eingegeben hast dann rechnest du noch -1 dazu und trägst nur jahr ein...
-
Zitat
Du solltest den Inputtext mit Sscanf Splitten und dann kannst du Tag,Monat,Jahr herrausfiltern. Dann rechnest du Das Datum - das Jetzige und wenn der Monat und tag oder nur monat größer ist als unser jetziges datum also du z.B. 12.12.2000 eingegeben hast dann rechnest du noch -1 dazu und trägst nur jahr ein...
-
Ich glaube ich suche mal schnell was herraus weil du willst ja nicht das da 12 steht wenn du am 12.12.2000 geboren bist... dann WIRST DU ERST 12 und bist 11 also jahr-jahr würde da nicht gehen.. ich kann dir mal zeigen wie ich das bei mir habe^^ ist aber nicht die beste lösung... gibt bessere(Ressourcen-Schonender geht es locker alle male...) PS: Achte auf mein Edit in max. 5 min.
Edit:
Code
Alles anzeigennewTag,Monat,Jahr; new Day,Month,Year; getdate(Year,Month,Day); sscanf(inputtext, "p<.>iii" , Tag, Monat, Jahr);//Das ist der Splitt des Inputtextes hier wird das was du eingibst "Aufteielt" so ist jedenfalls mein format wenn du als erstes jahr hast umdrehen.. //Hier habe ich abgefragt ob der tag auch reallistisch ist und monat etc. hier wären dann weitere if abfragen if(Month > Monat) { dini_IntSet(Spieler,"Alter",Year - Jahr); } else if(Month < Monat) { dini_IntSet(Spieler,"Alter",Year - Jahr- 1); }
-
wie mach ich das man in einem SendCLientMessage das alter sieht ? und was muss ich da genau auf SetPVarint einstellen da mein Register system so ist
-
du machst das mit einer formatierung.. da machst du dann halt das alter rein %d und "erläuterst" diese nach der nachricht mit year-jahr oder wie halt auch immer^^ also das dini ding weg und deine message rein und die formatierung... mit setplayvar kenne ich mich garnicht aus aber das kann kein großer unterschied sein...
-
da zeigt es mir jetzt immer an Du bist allso 0 Jahre alt
-
-
das hatte ich auch mal... dann ist da irgendwas falsch... wenn du vorher dafür eine var machst z.B. new spieleralter = Year-Jahr oder halt andersrum so dass z.B. 2012 - 200 gerechnet wird... und nicht andersrum^^ aber irgendwo ist dann dort ein fehler^^ wo der ist kann ich dir auch nicht sagen...
-
Er will wissen wie man die "genaue"(formatierte) Zeit aus gettime bekommt.
Das ganze nennt sich UNIX-Timestamp(gettime)
Diese Stock Funktionen sollten dir helfen die UNIX-Timestamp in ein Datum umzuwandeln also in eine formatierte Zeitangabe
Code
Alles anzeigenstock mktime(hour,minute,second,day,month,year) { new timestamp2; timestamp2 = second + (minute * 60) + (hour * 3600); new days_of_month[12]; if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) { days_of_month = {31,29,31,30,31,30,31,31,30,31,30,31}; // Schaltjahr } else { days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31}; // keins } new days_this_year = 0; days_this_year = day; if(month > 1) { // No January Calculation, because its always the 0 past months for(new i=0; i<month-1;i++) { days_this_year += days_of_month[i]; } } timestamp2 += days_this_year * 86400; for(new j=1970;j<year;j++) { timestamp2 += 31536000; if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) timestamp2 += 86400; // Schaltjahr + 1 Tag } return timestamp2; } stock Now() { new hour,minute,second,year,month,day; gettime(hour, minute, second); getdate(year, month, day); return mktime(hour,minute,second,day,month,year); }
-
Ich habe es jetzt so verstanden das wenn er sich Registriert er das Geburtsdatum eingibt z.B. 21.12.2001 und dann soll das Alter Automatisch errechnet werden also in dem falle wäre er 10 Jahre alt und wir am 21.12.2012 12 Jahre alt. So hatte ich das jetzt verstanden, deshalb hatte ich ihn auch die Zeilen geschrieben da ich das selber auch so habe xD auch mit der Nachricht^^ :O
-
Hier, das hab ich dir schnell mal gemacht:
Code
Alles anzeigenstock GetAge(Birthday[32]) { new D,M,Y,Age; getdate(Y,M,D); for(new i = strlen(Birthday); i > -1; i--) { if(Birthday[i] == '.') { new Tmp[32]; for(new o = i-1; o > -1; o--) { if(Birthday[o] == '.') { strmid(Tmp,Birthday,o+1,i); if(strval(Tmp)>=M) { strmid(Tmp,Birthday,0,o); if(strval(Tmp)>D) { strmid(Tmp,Birthday,i+1,strlen(Birthday)); Age = Y-strval(Tmp)-1; break; } } strmid(Tmp,Birthday,i+1,strlen(Birthday)); Age = Y-strval(Tmp); break; } } } } return Age; }
benutzung:
-
breadfish.de
Hat das Thema geschlossen.