DCV 2024 03/Strukturierte Programmierung Uebungen/Kalender: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Im folgenden sollen einige Funktionen der {{JSL|Calendar}} Api erlernt werden.
Im folgenden sollen einige Funktionen der {{JSL|Calendar}} Api erlernt werden.
  https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html


=== Aufgabe: Wann und wo? ===
=== Aufgabe: Wann und wo? ===

Version vom 21. März 2024, 09:14 Uhr

Im folgenden sollen einige Funktionen der Calendar Api erlernt werden.

 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

Aufgabe: Wann und wo?

Erstelle ein Programm, das das aktuelle Datum und die Uhrzeit ausgibt. Verwende für jede unten angegebene ausgabe ein eigenes SimpleDateFormat und erstelle eine 3 Zeilige Ausgabe:

  1. Nur das Datum
  2. Nur die Uhrzeit
  3. Datum und Uhrzeit
  4. Datum und Uhrzeit mit Zeitzone
  5. Die aktuelle Sekunde mit Millisekunde

Aufgabe: Mein Geburtstag

Erstelle ein Programm, das den Anwender nach seinem Geburtstag fragt und mit Hilfe von SimpleDateFormat.parse() verarbeitet. Als Ergebnis soll das Programm zurückgeben, an was für einem Wochentag der Geburtstag des Anwenders war. Hierbei kann Calendar verwendet werden.

Aufgabe: Alter

Erstelle ein Programm, das den Anwender nach seinem Geburtstag fragt und mit Hilfe von SimpleDateFormat.parse() verarbeitet. Als Ergebnis soll das Programm zurückgeben, Wie alt die Person in Jahren und Tagen ist.

Aufgabe: Wann ist Sonntag?

Erstelle eine neue Calendar Instanz und gib das Datum des nächsten Sonntags aus.

Aufgabe: Wieviele Sonntage hat der Monat?

Erstelle eine Methode welche als Parameter das Jahr und den Monat nimmt und die Anzahl der Sonntage zurückgibt. Teste diese Methode in der main Methode. Wie dieses Problem gelöst wird, steht dir völlig frei.

Aufruf:

System.out.println(getSundays(2021, 10));

Ausgabe:

5

Aufruf:

System.out.println(getSundays(2021, 9));

Ausgabe:

4

Aufgabe: Wieviele Arbeitstage?

Erstelle eine Methode welche als Parameter das Jahr und den Monat nimmt und die Anzahl der Arbeitstage zurückgibt (Mo-Fr). Teste diese Methode in der main Methode. Wie dieses Problem gelöst wird, steht dir völlig frei.

Aufruf:

System.out.println(getWorkdays(2021, 6));

Ausgabe:

22

Aufruf:

System.out.println(getWorkdays(2021, 3));

Ausgabe:

23

Aufruf:

System.out.println(getWorkdays(2021, 2));

Ausgabe:

20


Aufgabe: Kalender

Erstelle ein Programm, welches einen Kalender korrekt darstellt. Verwende Calendar und Date dafür, der aktuelle Tag soll speziell markiert werden.

Achte darauf, dass

  • Der aktuellen Tag ist mit Stern gekennzeichnet ist
  • Nicht jeder Monat am Montag beginnt
  • Nicht jeder Monat am Sonntag endet

Zum Testen sollst du verschiedene Tage als "heute" mit der Hilfe von Calendar verwenden.

Die Ausgabe sollte wie folgt sein:

2022 April
| Mo | Di | Mi | Do | Fr | Sa | So |
|    |    |    |    |  1 |  2 |  3 |
|  4*|  5 |  6 |  7 |  8 |  9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 |    |

Bonusaufgabe: Kalender Regionsunabhängig

Die Leute in Thailand sind traurig weil die Ausgabe deines Kalenderprogramms aus der vorhergehenden Aufgabe nicht korrekt ist, da ihre Woche am Sonntag beginnt. Ändere dein Programm so ab, dass es Kalenderunabhängig den richtigen Wochenstart verwendet. Verwende dafür calendar.getStartOfWeek(). Teste dein Programm mit verschiedenen Locales in der main() Methode.

Aufruf

//Locale wird auf Thailand gesetzt, hier wird der Buddistische Kalender verwendet
Locale.setDefault(new Locale.Builder().setRegion("TH").setLanguage("th").build());
printCalendar(2565, 4);

//Locale wird auf Deutschland gesetzt, hier wird der Gregorianische Kalender verwendet
Locale.setDefault(Locale.GERMANY);
printCalendar(2022, 4);

Ausgabe

2022 04
| Mo | Di | Mi | Do | Fr | Sa | So |
|    |    |    |    |  1 |  2 |  3 |
|  4*|  5 |  6 |  7 |  8 |  9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 |    |

2565 04
| So | Mo | Di | Mi | Do | Fr | Sa |
|    |    |    |    |    |  1 |  2 |
|  3 |  4*|  5 |  6 |  7 |  8 |  9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |