• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Methoden Calendar/Date Countdown

missy72

missy72

Aktives Mitglied
Hallo,

ich möchte einen Countdown erstellen und arbeite mit zwei Calendar-Objekten.
Über die Date-Funktion möchte ich das Delta errechnen. Scheint so aber nicht zu funktionieren.

Meine 1. Frage; gibt es ein Bug bei der Erstellung des GregorianCalender? Augenmerk auf den Monat!
Warum zählt man nur den Monat von 0 bis 11?
Java:
 Calendar nextStartCalendar = new  GregorianCalendar(2021, 2, 26, 20, 47, 0);
Konsole:
Fri Mar 26 20:47:00 CET 2021

2.Frage; warum weicht das Delta um eine Stunde ab. War auch schon mal nur 59min. Es gibt kein zuverlässiges Ergebnis.
Darf und Kann man mein Problem überhaupt so lösen?
Java:
Date counterDate = new Date ( startTimeDate.getTime() - timeNowDate.getTime());
Konsole:
20:55:50
22:15:15
02:19:25
und müsste die Methode nicht 0 ergeben?
Java:
Date counterDate = new Date ( startTimeDate.getTime() - startTimeDate.getTime());
Konsole:
01:00:00

Ich denke, dass viele Programme eine entsprechene Funktion benötigen, aber irgenwie habe ich noch nicht so das richtige im Netz gefunden.
Um Unterstützung wäre ich dankbar

MfG MB
 
L

LimDul

Top Contributor
missy72

missy72

Aktives Mitglied
Der Grund warum ich Calendar benutze ist, weil ich es nicht besser weiß.
Und das mit in den Fuß schießen habe ich gemerkt. Kommt ja nur Blödsinn dabei raus.
Zeitzonen sind bei beiden Kalender gleich.
Konsole:
Fri Feb 26 21:01:58 CET 2021
Fri Mar 26 22:15:15 CET 2021

Dann schau ich mal was ich so im Netz finde wegen der LocalDateTime.
Da habe ich wenigstens eine Richtung, in welche ich mich bewegen kann.

Vielen Dank.
 
Robert Zenz

Robert Zenz

Bekanntes Mitglied
Meine 1. Frage; gibt es ein Bug bei der Erstellung des GregorianCalender? Augenmerk auf den Monat!
Warum zählt man nur den Monat von 0 bis 11?
Weil die API damals so erstellt wurde.
2.Frage; warum weicht das Delta um eine Stunde ab. War auch schon mal nur 59min. Es gibt kein zuverlässiges Ergebnis.
Darf und Kann man mein Problem überhaupt so lösen?
Die Antwort ist: Kommt darauf an...
Wie erstellst du "startTimeDate" und "timeNowDate"? Vermutlich weicht es dabei schon um die Zeitzone ab. "getTime" liefert dir den UNIX-Zeitstempel, dieser ist immer UTC.

Also idealerweise verwendest du "java.time" Klassen, wie "LocalDateTime" und "OffsetDateTime". Das ist eine neue API welche in Java 8 hinzugekommen ist und so ziemlich alle Probleme mit Zeitzonen etc. beseitigt. Im ersten Moment ist sie etwas klobiger zu handhaben, aber wenn man sich einmal in Datum, Zeit und Zeitzonen eingelesen hat, versteht man wieso dem so ist (Hinweis: Es ist furchtbar).

Beispiel wie du den Unterschied zwischen zwei "OffsetDateTime" bekommst:

Java:
OffsetDateTime firstDateTime = OffsetDateTime.now();
OffsetDateTime secondDateTime = OffsetDateTime.now();

long differenceInHours = ChronoUnit.HOURS.between(firstDateTime, secondDateTime);

Je nachdem mit was fuer Daten du handierst, reicht dir vermutlich "LocalDateTime", welches keine Zeitzone beachtet.
 
missy72

missy72

Aktives Mitglied
Für die Nachwelt und die Suchenden , meine Lösung.
Danke noch mal.

Java:
        LocalDate nowDate     = LocalDate.now();
        LocalTime nowTime     = LocalTime.now();
        LocalTime startTime   = LocalTime.of(23, 30, 0);   
            long countDownVariable = Duration.between (nowTime, startTime).getSeconds();   
        LocalTime countDown = LocalTime.ofSecondOfDay(countDownVariable);
          
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yy");
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
    
    System.out.println("" + dateFormatter.format(nowDate));
    System.out.println("" + timeFormatter.format(nowTime));
    System.out.println("" + timeFormatter.format(startTime));
    System.out.println("" + timeFormatter.format(countDown));
Konsole:
Datum        26.02.21
Uhrzeit      22:38:18
Startzeit    23:30:00
Delta        00:51:41
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Statt LocalTime für die Dauer zu „missbrauchen“ kannst du besser direkt Duration nutzen, ohne das vorher in Sekunden umzuwandeln :)
 
missy72

missy72

Aktives Mitglied
Statt LocalTime für die Dauer zu „missbrauchen“ kannst du besser direkt Duration nutzen, ohne das vorher in Sekunden umzuwandeln :)
Das habe ich jetzt nicht verstanden.
Am Ende möchte ich alle vier Werte über je ein Label visualisieren.
1614377169410.png

PS: Im nächsten Step lasse ich den Countdown ablaufen und die Uhrzeit dynmisch anzeigen.
 
missy72

missy72

Aktives Mitglied
ist mir vorhin gar nicht aufgefallen. Dem Countdown fehlt eine Sekunde.
Wie kommt denn das jetzt schon wieder? Aber man kann ja nicht immer alles hinterfragen.
Ist mir jetzt gleich, ich habe eine Lösung dafür.
Den Code in Zeile fünf aus dem Beitrag #5 abändern.
Java:
countDown = LocalTime.ofSecondOfDay(countDownVariable + 1 );
 
missy72

missy72

Aktives Mitglied
Danke. Die Logik dahinter habe ich nun verstanden.

Programmieren ist echt anstrengend. Gefühlsmäßig geht es alle fünf Minuten auf- und abwärts. Kaum hat man für ein Problem die Lösung gefunden, hängt das Programm sich wieder an der nächsten Stelle auf. Vielen Dank für die vielen fleißigen Unterstützer, den es nicht überdrüssig wird den Anfängern immer wieder unter die Arme zu greifen.

Hochachtungsvoll MB
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Calendar/Date arithmetic Allgemeine Java-Themen 3
V Date und Calendar . Allgemeine Java-Themen 3
D Datum und Zeit - Date, Calendar oder GregorianCalender ? Allgemeine Java-Themen 13
T Probleme mit Date und Calendar Allgemeine Java-Themen 7
F Überprüfen ob es Überschneidungen von Uhrzeiten (vom Typ Calendar) gibt Allgemeine Java-Themen 10
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
S Calendar vergleich Allgemeine Java-Themen 2
K Calendar Allgemeine Java-Themen 2
Mike90 Calendar mit EDT Timezone Allgemeine Java-Themen 4
U Richfaces Calendar Auto Korrektur Allgemeine Java-Themen 2
S Calendar, WeekOfYear Allgemeine Java-Themen 2
-MacNuke- Calendar erst nach getTime() gesetzt? Allgemeine Java-Themen 4
V Calendar monatstage herausfinden? Allgemeine Java-Themen 2
C Calendar bzw. GregorianCalendar Klasse Allgemeine Java-Themen 12
Zed Calendar über Kalenderwochen iterieren Allgemeine Java-Themen 3
J Calendar gibt falsche Wochenanzahl zurück Allgemeine Java-Themen 3
T Suche den großen Calendar Thread ! Allgemeine Java-Themen 2
J Datentyp "Calendar" umwandeln und ausgeben können Allgemeine Java-Themen 36
A Jahresüberschlag bei Gregorian Calendar Allgemeine Java-Themen 3
I Calendar Allgemeine Java-Themen 2
M Bug bei Calendar.add? Allgemeine Java-Themen 5
J (JAVA) Calendar-Objekt formatiert ausgeben Allgemeine Java-Themen 9
G java.sql.Time Calendar-Objekt zuweisen Allgemeine Java-Themen 2
W Bereichsüberschreitung bei Klasse Calendar Allgemeine Java-Themen 3
N Unterschied Calendar und GregorianCalendar Allgemeine Java-Themen 9
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
M Date aus einer ArrayList<Date> holen ?? Allgemeine Java-Themen 5
M JDBC DATE 0000-00-00 kann nicht ausgegeben werden Allgemeine Java-Themen 3
L Erste Schritte Java Date Format Pattern bestimmten Allgemeine Java-Themen 2
Blender3D AWT Fehlerhafte Zeit bei Calender und Date DateFormat Allgemeine Java-Themen 8
P Date und Time in Java Allgemeine Java-Themen 7
B Swing Date Spinner Allgemeine Java-Themen 2
Grejak Date und SimpleDateFormat Allgemeine Java-Themen 6
D Timestamp to Date, ergibt falsches ergebnis Allgemeine Java-Themen 5
M massenhaft verschiedene Date-Pattern Allgemeine Java-Themen 3
N SimpleDateFormat: Unparseable date Allgemeine Java-Themen 5
Madlip Erste Schritte Probleme mit Date() Allgemeine Java-Themen 6
T String in Date parsen (*ohne* bekanntes Format) Allgemeine Java-Themen 8
N java.util.Date - Zeit auf 00:00 setzen Allgemeine Java-Themen 3
GianaSisters Klassen Unterschiedliche Zeiten bei DATE Allgemeine Java-Themen 6
Z new Date() liefert falsche Uhrzeit Allgemeine Java-Themen 12
J Datentypen Problem mit Date-Object Allgemeine Java-Themen 2
B Unix-Timestamp > Date macht Probleme. Allgemeine Java-Themen 3
M Object-Instanz in Date übersetzen Allgemeine Java-Themen 6
E Seltsamer aufruf von java.util.Date.toString() Allgemeine Java-Themen 3
hdi JTable: Sortierung von Date-Objekten Allgemeine Java-Themen 4
Joy String in Date umwandeln Allgemeine Java-Themen 2
K String zu Date kovertieren Allgemeine Java-Themen 3
S Zeitserver Abfragen und in Date speichern Allgemeine Java-Themen 5
0 Datum in Java Date umwandeln Allgemeine Java-Themen 4
C Datum erstellen für SQL Format Date Allgemeine Java-Themen 3
R Moeglichst viele Datumsstrings in Date Objekte konvertieren? Allgemeine Java-Themen 3
B Date Addition Allgemeine Java-Themen 2
H2SO3- Date "18.11.2002 20:02:33" trotz Locale.GERMAN nic Allgemeine Java-Themen 9
H2SO3- Exception beim date parsen des Jahres 00 Allgemeine Java-Themen 6
H2SO3- merken versch. Date Typen + erlaubte und unerlaubte kombinat Allgemeine Java-Themen 4
H2SO3- date mit pm and am parsen Allgemeine Java-Themen 3
G double in Date Allgemeine Java-Themen 5
S Date Objekt von voller Stunde Allgemeine Java-Themen 3
M Date objekt als 00.00.0000 ausgeben Allgemeine Java-Themen 2
MQue Date, Timestamp, Millisecond Allgemeine Java-Themen 3
alexpetri Date Parsen Allgemeine Java-Themen 3
F Problem mit TimeStamp to Date Allgemeine Java-Themen 8
M Date Range auswerten und die Monate berechnen Allgemeine Java-Themen 2
DEvent min. Jahr von Date Allgemeine Java-Themen 2
H Wer kennt sich mit der Klasse Date aus? Allgemeine Java-Themen 3
G Date wird nicht richtig geparsed Allgemeine Java-Themen 3
H zwei Date Variablen überschreiben sich Allgemeine Java-Themen 2
P von Date zu Timestamp Allgemeine Java-Themen 10
H Date in String wandeln un dumgekehrt. Allgemeine Java-Themen 17
P SimpleDateFormat/Date Allgemeine Java-Themen 4
N Date & RMI Problem Allgemeine Java-Themen 3
P sql.Date -> the constructor Date() is undefined! Allgemeine Java-Themen 3
M String nach Date Allgemeine Java-Themen 4
E XML dateTime String in Date mit SimpleDateFormat umwandeln Allgemeine Java-Themen 5
K Date formatieren Allgemeine Java-Themen 7
L String ==> Date ==> GregorianCalendar Allgemeine Java-Themen 3
G Date-Objekt aus Datums-String erstellen Allgemeine Java-Themen 6
F Spezialfrage zu Date Allgemeine Java-Themen 5
L-ectron-X Zeitspanne mit Date und DateFormat Allgemeine Java-Themen 7
B String to Date Allgemeine Java-Themen 7
K Date: getTime immer gleich Allgemeine Java-Themen 4
B Java.Date -> Delphi.TDateTime Allgemeine Java-Themen 4
P Alter in Jahren aus Date-Objekt ermitteln Allgemeine Java-Themen 5
T Datum als String in Date umwandeln Allgemeine Java-Themen 3
R Date Tage abziehen Allgemeine Java-Themen 3
I java.util.Date - die 1970-Untergrenze Allgemeine Java-Themen 3
W Mit Date-Objekten arbeiten Allgemeine Java-Themen 10
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
snipesss Visueller Countdown in JFrame Allgemeine Java-Themen 1
Tacofan JAVA Countdown Allgemeine Java-Themen 10
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
A Methoden Countdown Allgemeine Java-Themen 10
R "Countdown" Implementierung Allgemeine Java-Themen 5
M Countdown mit Besonderheiten Allgemeine Java-Themen 9
T Countdown -> Sekunden anzeigen Allgemeine Java-Themen 4
J Countdown probleme Allgemeine Java-Themen 5

Ähnliche Java Themen

Anzeige

Neue Themen


Oben