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.