Datum Rechner

  • GM 7

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datum Rechner

    Halli Hallo,

    Hier das 1. Problem [Gelöst]
    Ich kann nicht eine Zeile runter schreiben.
    Der Text wird immer überschrieben, wenn ich

    GML-Quellcode

    1. global.text = "lala"
    2. file = file_text_open_write("Log.txt")
    3. file_text_write_string(file,string(global.text))
    4. file_text_writeln(file)
    5. file_text_close(file)


    verwende.

    --

    Das 2. Problem befindet sich im 3. Beitrag

    Liebe Grüße
    icqgamer

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von icqgamer () aus folgendem Grund: 1. Problem behoben

  • Dankeschön, das klappt ersteinmal :)

    Nun kommen wir zum 2. Problem:

    Ich habe die Funktion, dass er ausrechnen soll, wann man Geburtstag hat.
    Zuerst gibt man die Daten an: Jahr, Monat, Tag, Stunde, Minute, Sekunde
    Als nächstes kommt folgende Rechnung:

    Spoiler anzeigen

    GML-Quellcode

    1. global.montha = real(global.month)-real(current_month)
    2. global.daya = real(global.day)-real(current_day)
    3. global.houra = real(global.hour)-real(current_hour)
    4. global.minutea = real(global.minute)-real(current_minute)
    5. global.seconda = real(global.second)-real(current_second)
    6. if global.seconda<0
    7. {
    8. global.minutea-=1
    9. global.seconda+=60
    10. }
    11. if global.minutea<0
    12. {
    13. global.houra-=1
    14. global.minutea+=60
    15. }
    16. if global.houra<0
    17. {
    18. global.daya-=1
    19. global.houra+=24
    20. }
    21. switch(global.daya)<0
    22. {
    23. global.montha-=1
    24. case real(global.month) = 1: global.daya+=31; break;
    25. case real(global.month) = 2: global.daya+=28; break;
    26. case real(global.month) = 3: global.daya+=31; break;
    27. case real(global.month) = 4: global.daya+=30; break;
    28. case real(global.month) = 5: global.daya+=31; break;
    29. case real(global.month) = 6: global.daya+=30; break;
    30. case real(global.month) = 7: global.daya+=31; break;
    31. case real(global.month) = 8: global.daya+=31; break;
    32. case real(global.month) = 9: global.daya+=30; break;
    33. case real(global.month) = 10: global.daya+=31; break;
    34. case real(global.month) = 11: global.daya+=30; break;
    35. case real(global.month) = 12: global.daya+=31; break;
    36. }
    37. if global.montha<0
    38. {
    39. global.yeara-=1
    40. global.montha+=12
    41. }
    Alles anzeigen



    Wobei irgendwas in diesem Teil falsch sein muss:
    Spoiler anzeigen

    GML-Quellcode

    1. switch(global.daya)<0
    2. {
    3. global.montha-=1
    4. case real(global.month) = 1: global.daya+=31; break;
    5. case real(global.month) = 2: global.daya+=28; break;
    6. case real(global.month) = 3: global.daya+=31; break;
    7. case real(global.month) = 4: global.daya+=30; break;
    8. case real(global.month) = 5: global.daya+=31; break;
    9. case real(global.month) = 6: global.daya+=30; break;
    10. case real(global.month) = 7: global.daya+=31; break;
    11. case real(global.month) = 8: global.daya+=31; break;
    12. case real(global.month) = 9: global.daya+=30; break;
    13. case real(global.month) = 10: global.daya+=31; break;
    14. case real(global.month) = 11: global.daya+=30; break;
    15. case real(global.month) = 12: global.daya+=31; break;
    16. }
    Alles anzeigen



    Das Problem liegt nämlich dadrin, dass nicht jeder Monat gleich viele tage hat und ich nicht weiß, wie er nun die richtigen ausrechnet.

    Dank meinem Vorposter kann ich euch die Logdatei posten:

    Zeit zum Geburtstag: 0 Jahre 1 Monate 9 Tage 8 Stunden 1 Minuten 33 Sekunden
    Zeit zum Geburtstag: 0 Jahre 2 Monate 9 Tage 8 Stunden 1 Minuten 20 Sekunden
    Zeit zum Geburtstag: 0 Jahre 6 Monate 9 Tage 8 Stunden 1 Minuten 10 Sekunden

    Die erste Zeile ist die Richtige ( Habe 24.07. Geburtstag )
    Die 2. Zeile ist ein Monat mehr
    Die 3. Zeile ist mit dem 12. Monat

    Allerdings überall die gleiche Anzahl von Tagen, was ja nicht sein kann.

    Ich hoffe ihr habt das Problem bis hierhin soweit verstanden ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von icqgamer ()

  • Ich habe nun folgendes genommen:

    GML-Quellcode

    1. global.yeara = date_year_span(current_year,global.year)
    2. global.montha = date_month_span(current_month,global.month)
    3. global.daya = date_day_span(current_day,global.day)
    4. global. houra = date_hour_span(current_hour,global.hour)
    5. global.minutea = date_minute_span(current_minute,global.minute)
    6. global. seconda = date_second_span(current_second,global.second)
    7. global.gesammtzeit = "Jahre: "+string(global.yeara)+"#Monate: "+string(global.montha)+"#Tage: "+string(global.daya)+"#Stunden: "+string(global.houra)+"#Minuten: "+string(global.minutea)+"#Sekunden: "+string(global.seconda)


    Allerdings wird dann folgende Zeit angezeigt:

    Zeit zum Geburtstag: 5.51 Jahre 0.20 Monate 14 Tage 456 Stunden 27360 Minuten 3974400 Sekunden
    Das kann schon alleine mit den Jahren nicht stimmen, wenn ich dieses Jahr Geburtstag habe

    In der Help steht: date_year_span(date1,date2) Gibt die Anzahl von Jahren zwischen den zwei Daten wieder. Über unvollendete Jahre wird in einem Bruch berichtet.

    Soweit ich weiß bedeutet das, dass er die Jahre zwischen 2012 und 2011 z.B. wiedergibt.
    Da ich aber nun dieses Jahr also 2011 Geburtstag habe, müsste das mindestens ein Bruch unter 1 sein, der zeigt mir aber 5 Jahre an, kann ja nicht stimmen..
  • Du musst zuerst deinen Geburtstag in ein Datum konvertieren. Denn die Parameter müssen Dati sein, und keine Jahr, Monats etc - Angaben. Außerdem solltest du die Bereits verwendeten abziehen.

    GML-Quellcode

    1. date1 = date_current_datetime();
    2. date2 = date_create_datetime(global.year,global.month,global.day,global.hour,global.minute,global.second) ;
    3. global.yeara = floor(date_year_span(date1,date2));
    4. date2 = date_inc_year(date2,-global.yeara);
    5. global.montha = date_month_span(date1,date2) ;
    6. date2 = date_inc_month(date2,-global.montha);
    7. // .. usw

    © 2008 by Teamgrill Productions

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MasterXY ()

  • Ähm, bei mir funktioniert es so wie es soll. Kann es sein, dass du 24.07.11 geschrieben hast anstatt 24.07.2011? Denn wenn ich date_year_span(current_year,11) ausführe, bekomme ich auf etwas mit 5.i'was raus. Prüfe es mal nach.

    MfG

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • Siehe meinen Edit. Habs nicht getestet, müsste aber so stimmen. Nach jeder Abfrage wird der betreffende Wert vom Datum entfernt, damit es wie du gesagt hast richtig abgezogen wird.
    BTW wenn du nur die Zeit BIS ZUM NÄCHSTEN Geburtstag brauchst, ist es eh logisch, dass du die Aktuelle Jahreszahl nehmen musst.

    © 2008 by Teamgrill Productions
  • Habe nun folgendes eingesetzt:

    GML-Quellcode

    1. date1 = date_current_datetime();
    2. date2 = date_create_datetime(global.year,global.month,global.day,global.hour,global.minute,global.second);
    3. global.yeara = floor(date_year_span(date1,date2));
    4. date2 = date_inc_year(date2,-global.yeara);
    5. global.montha = floor(date_month_span(date1,date2)) ;
    6. date2 = date_inc_month(date2,-global.montha);
    7. global.daya = floor(date_day_span(date1,date2)) ;
    8. date2 = date_inc_day(date2,-global.daya);
    9. global.houra = floor(date_hour_span(date1,date2)) ;
    10. date2 = date_inc_hour(date2,-global.houra);
    11. global.minutea = floor(date_minute_span(date1,date2)) ;
    12. date2 = date_inc_minute(date2,-global.minutea);
    13. global.seconda = floor(date_second_span(date1,date2)) ;
    14. date2 = date_inc_second(date2,-global.seconda);
    Alles anzeigen


    Im Log steht folgendes:
    Zeit zum Geburtstag: 111 Jahre 2669 Monate 162487 Tage 7799396 Stunden 935927561 Minuten 642157666 Sekunden

    Es wird immer merkwürdiger xD
    111 Jahre ^^

    Trotzdem danke für die schnelle Hilfe

    edit: Das lustige ist ja, ich kann eingeben was ich will, der zeigt mir immer das Gleiche an
  • GML-Quellcode

    1. //Mein Geburtstag!
    2. geburtstag_monat=2;
    3. geburtstag_tag=23;
    4. currentdate=date_current_datetime();
    5. //Geburtstag noch in diesem Jahr?
    6. if (geburtstag_monat>=current_month) and (geburtstag_tag>current_day)
    7. gebdate=date_create_datetime(current_year,geburtstag_monat,geburtstag_tag,0,0,0);
    8. else
    9. gebdate=date_create_datetime(current_year+1,geburtstag_monat,geburtstag_tag,0,0,0);
    10. //Differenz richtig berrechnen:
    11. years=floor(date_year_span(gebdate,currentdate));
    12. months=floor(date_month_span(gebdate,currentdate))-floor(date_year_span(gebdate,currentdate))*12;
    13. days=floor(date_day_span(gebdate,currentdate))-floor(date_month_span(gebdate,currentdate))*30;
    14. hours=floor(date_hour_span(gebdate,currentdate))-floor(date_day_span(gebdate,currentdate))*24;
    15. minuts=floor(date_minute_span(gebdate,currentdate))-floor(date_hour_span(gebdate,currentdate))*60;
    16. seconds=floor(date_second_span(gebdate,currentdate))-floor(date_minute_span(gebdate,currentdate))*60;
    Alles anzeigen

    Ich konnte es leider noch nicht richtig testen, sollte aber funktionieren.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Ich habe nun

    GML-Quellcode

    1. //Mein Geburtstag!
    2. global.currentdate = date_current_datetime();
    3. //Geburtstag noch in diesem Jahr?
    4. if (real(global.month)>=real(current_month)) and (real(global.day)>real(current_day))
    5. {
    6. global.bday = date_create_datetime(current_year,global.month,global.day,global.hour,global.minute,global.second);
    7. }
    8. else
    9. {
    10. global.bday = date_create_datetime(current_year+1,global.month,global.day,global.hour,global.minute,global.second);
    11. }
    12. //Differenz richtig berrechnen:
    13. global.yeara = floor(date_year_span(global.bday,global.currentdate));
    14. global.montha = floor(date_month_span(global.bday,global.currentdate))-floor(date_year_span(global.bday,global.currentdate))*12;
    15. global.daya = floor(date_day_span(global.bday,global.currentdate))-floor(date_month_span(global.bday,global.currentdate))*30;
    16. global.houra = floor(date_hour_span(global.bday,global.currentdate))-floor(date_day_span(global.bday,global.currentdate))*24;
    17. global.minutea = floor(date_minute_span(global.bday,global.currentdate))-floor(date_hour_span(global.bday,global.currentdate))*60;
    18. global.seconda = floor(date_second_span(global.bday,global.currentdate))-floor(date_minute_span(global.bday,global.currentdate))*60;
    Alles anzeigen


    Du wirst es nicht glauben, aber schon wieder 111 Jahre..
    Soll ich mal die GMK ( Game Maker 7 ) hochladen?
    Vielleicht könnt ihr damit mehr anfangen
  • Uff... dummer Anfängerfehler..

    Habe nun das hier:

    GML-Quellcode

    1. global.year = get_integer("Jahre",'')
    2. global.month = get_integer("Monate",'')
    3. global.day = get_integer("Tag",'')
    4. global.hour = get_integer("Stunde",'')
    5. global.minute = get_integer("Minute",'')
    6. global.second = get_integer("Sekunde",'')


    Vorher hatte ich da überall get_string -.-'
    Aber nun klappt es, dankeschön!
    Dankeschön auch an alle anderen, die sich so viel Mühe gegeben haben!