gregorian calender

  • Ich habe eine Counter APP geschrieben und benutze dafür den gregorianischen Kalender zum Umrechnen (siehe nachfolgende Zeilen).


    private final long finalDay = new GregorianCalendar(2020, 7, 27).getTimeInMillis();
    private final long DAYS = 1000 * 60 * 60 * 24;Jetzt tritt folgendes Problem auf.Das Zieldatum wird Hardcoded eingegeben (siehe oben 2020,07,27),wenn Datum gleich ist erscheint 0, wenn Datum +1 ist erscheint auch 1,erst wenn Datum +2 ist erscheint 1,Warum ist das so.für Hinweise bin sehr dankbar.kermit

  • Hallo


    Etwas mehr Mühe bei deinem Post könntest du dir schon geben vorallen Übersicht.
    Quellcode und Text etwas trennen.
    Es gibt auch einen Code Block in den Forum was man benutzen darf und sollte.


    Richtig erklären was du willst oder tust, tust du auch nicht, so wirst du keine vernünftige Hilfe bekommen.


    Vor allem was vergleichst du und wie? Ohne Code ist die Frage sinnlos.


    Auf diesen verquirlten Post kann und werde ich keine Hilfe geben.

  • Hallo,


    Es tut mir leid wenn ich mich nicht richtig ausgedrückt habe aber das ist meine erste Anfrage und ich bin neu hier in eurem Forum.


    Mit dem Ausdruck Code Block kann ich nichts anstellen. Was ist das?


    Ich werde auf alle fälle die Anfrage noch einmal neu schreiben.


    kermit

  • Wichtig ist wie du den Datums Vergleich machst wie du auf die 0, 1, oder 2 kommst?
    Ohne Code kann man da nichts sagen.


    Im Forum gibt es oben ein Symbol icon </>
    Dort solltest du Code eingeben. Zumindestens Wenn er mehrere Zeilen sind.


    Und wenn du Code so postest bitte nicht gleich weiter Scheiben. Keiner will das erst auseinander fummeln. Neue Zeile vileicht.


    So jetzt poste die entsprechende Zeile.

  • Hier sind die Codes von meiner Counter APP.
    Ich werde versuchen das Problem nochmal genau zu beschreiben.


    in dieser Zeile schreibe ich derzeit noch das Datum ein wann das Ereignis ist.
    private final long finalDay = new GregorianCalendar(2020, 7, 29).getTimeInMillis();


    mit dem Gregorianischem Kalender soll dann die Anzahl der tage berechnet wann das Ereignis ist und im Text Feld


    (android:id="@+id/editTextNumberSigned")


    ausgegeben werden.


    In diesem Beispiel ist es jetzt so:
    Heute beim Tagesdatum 28.08.2020 wird 0 ausgegeben.
    Nach meinem verständnis sollte aber eine 1 ausgegeben werden.


    Kann mir jemand sagen warum das so ist.



    activity_main.xml



    MainActivity.java

  • Dann überlege mal was long ist, ist eine Ganzzahl wie Int nur mit 64 Bit.


    Was kommt bei der Division raus ?



    long remainingDays = (finalDay - System.currentTimeMillis()) / DAYS;



    du arbeitest ja nur mit den Long werten ,nicht mit dem Kalender .




    nimm dir ein Beispiel und rechne es selber. Und mache am ende ein Type cast zu int oder long.


    Welche Zeit wird deiner Meinung nach genommen wenn du das Datum von heute ein gibst. Und welchen long Wert bekommst du heute um 12 Uhr.
    Wie ist das Ergebnis von deinem Datum minus der actuellen Uhrzeit z.b 12 Uhr.
    Größer oder kleiner oder gleich 0?
    Auf jeden Fall kleiner Null.
    Wenn du keine Zeit bei deinem Datum angibst wird 00:00:00 genommen. UTC 0


    Was hast du nach der Division mit einen Tag? Weniger als einen Tag dezimal sogar minus.


    Das ist einfache Mathematik.



    Was macht ein Typ cast von -0,1 zu Int?
    Ein runden findet im allgemeinen nicht statt. Wenn du es nicht machst. Einfach nur Ganzzahl und Rest. Und die Ganzzahl ist in der long.
    Selbst - 0,99999999 wird zu 0



    Zitat

    Heute beim Tagesdatum 28.08.2020 wird 0 ausgegeben.

    Ist doch auch richtig von heute 0:00 zu heute 10:00 sind auch weniger als ein Tag.
    Ganzzahlen Kommastellen gibst es nicht bei long.
    Keine Ahnung was du hier rechnest.


    Bedenken musst du auch noch in welche Zeitzone du das Datum bei der Eingabe bekommst ohne Angabe ist es UTC 0.


    Die Systemzeit wenn du in Deutschland bist bekommst du in utc +1 momentan Sommer Zeit utc +2 als long wert zurück.

  • Vielen Dank für die Anregung und die Tipps.


    Zu meinem ersten Beitrag muss ich leider hinzufügen, das ich den so nicht geschrieben habe.
    Wer oder vielmehr welches Programm mir das auf diese weise umformatiert hat weiß ich nicht.
    Gebe dir völlig recht das man so nicht damit Arbeiten kann.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!