Datum ausgeben

Lybrial

Bekanntes Mitglied
Heyho,

ich möchte wenn man ein Datum in das Programm eingibt, den entsprechenden
Wochentag ausgeben lassen. Allerdings nur später als Jahr 1900.
Das Programm steht soweit, es scheint nur kleine Probleme mit der Abstimmung
der Schaltjahre zu geben. Für das heutige Datum stimmt der Wochentag, für
den 30.06.2004 beispielsweise, stimmt das Datum nicht.
Hab verschiedene Dinge ausprobiert und finde die "Feinabstimmung" nicht ^^

Java:
import java.util.Scanner;
public class Datum_Tag
{
	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);
		
		int jahr, monat, tag;
		int wochentag;
		int schaltjahr;
		
		System.out.print("Geben sie den Tag ein: ");
		tag = input.nextInt();
		System.out.print("Geben sie den Monat ein: ");
		monat = input.nextInt();
		System.out.print("Geben sie das Jahr ein: ");
		jahr = input.nextInt();
		
		wochentag = (jahr - 1900) * 365 + (jahr - 1900)/4;
		
		if (jahr%4==0 && (jahr%100!=0 || jahr%400==0))
		{
			wochentag++;
		}
		
		switch (monat)
		{
			case 12 : wochentag += 30;
			case 11 : wochentag += 31;
			case 10 : wochentag += 30;
			case 9 : wochentag += 31;
			case 8 : wochentag += 31;
			case 7 : wochentag += 30;
			case 6 : wochentag += 31;
			case 5 : wochentag += 30;
			case 4 : wochentag += 31;
			case 3 : wochentag += 28;
			case 2 : wochentag += 31;
		}
		
		wochentag = (wochentag  + tag)%7;
		
		switch (wochentag)
		{
		case 0 : System.out.println("Der Tag ist ein Sonntag!");
			break;
		case 1 : System.out.println("Der Tag ist ein Montag!");
			break;
		case 2 : System.out.println("Der Tag ist ein Dienstag!");
			break;
		case 3 : System.out.println("Der Tag ist ein Mittwoch!");
			break;
		case 4 : System.out.println("Der Tag ist ein Donnerstag!");
			break;
		case 5 : System.out.println("Der Tag ist ein Freitag!");
			break;
		case 6 : System.out.println("Der Tag ist ein Samstag!");
			break;
		}
	}
}
 

Der Müde Joe

Top Contributor
Java:
Calendar cal = new GregorianCalendar(2010, 9, 30);
System.out.println(cal.get(Calendar.DAY_OF_WEEK));

Achtung: Constante in Calendar anschauen... January == 0 !! Das Datum im Code ist der 30.okt.2010
 

Lybrial

Bekanntes Mitglied
Jo die Funktion kenne ich, ziel aber war ohne solche Funktionen
eine richtige Tagesausgabe zu Coden^^

Erst ab dem Jahr 1900, weil vorher so viele Zeitänderungen statt
fanden etc.
 

Murray

Top Contributor
Erkläre uns doch zunächst mal - z.B. in Form von Kommentaren im Code - was Du mit den diversen Berechnungen bezweckst; mir z.B. erschließt sich die Berechnung von wochentag nicht sofort; insbesondere das switch-Statement könnte etwas Kommentierung vertragen.
 

Lybrial

Bekanntes Mitglied
Java:
import java.util.Scanner;
public class Datum_Tag
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        
        int jahr, monat, tag;
        int wochentag;
        int schaltjahr;
        
        System.out.print("Geben sie den Tag ein: ");
        tag = input.nextInt();
        System.out.print("Geben sie den Monat ein: ");
        monat = input.nextInt();
        System.out.print("Geben sie das Jahr ein: ");
        jahr = input.nextInt();
        
        wochentag = (jahr - 1900) * 365 + (jahr - 1900)/4; //Alle Tage vom Jahr 1900 bis heute inkl. Schaltjahre (hier habe ich bereits verschiedene Varianten ausprobiert, nach den Regeln wann ein Schaltjahr überhaupt ein Schaltjahr ist).
        
        if (jahr%4==0 && (jahr%100!=0 || jahr%400==0))  //prüfen ob eingegebenes Jahr ein schaltjahr ist
        {                                                                  
            wochentag++;
        }
        
        switch (monat)                              //Wenn z. B. eingegebenes Datum "3" ist, müssen die Tage von 2-3 Dazu addiert werden
        {                                                
            case 12 : wochentag += 30;
            case 11 : wochentag += 31;
            case 10 : wochentag += 30;
            case 9 : wochentag += 31;
            case 8 : wochentag += 31;
            case 7 : wochentag += 30;
            case 6 : wochentag += 31;
            case 5 : wochentag += 30;
            case 4 : wochentag += 31;
            case 3 : wochentag += 28;
            case 2 : wochentag += 31;
        }
        
        wochentag = (wochentag  + tag)%7;    //Nachkommastelle ergibt den Wochentag
        
        switch (wochentag)
        {
        case 0 : System.out.println("Der Tag ist ein Sonntag!");
            break;
        case 1 : System.out.println("Der Tag ist ein Montag!");
            break;
        case 2 : System.out.println("Der Tag ist ein Dienstag!");
            break;
        case 3 : System.out.println("Der Tag ist ein Mittwoch!");
            break;
        case 4 : System.out.println("Der Tag ist ein Donnerstag!");
            break;
        case 5 : System.out.println("Der Tag ist ein Freitag!");
            break;
        case 6 : System.out.println("Der Tag ist ein Samstag!");
            break;
        }
    }
}
 
S

SlaterB

Gast
für das aktuelle Jahr hast du die komplizierte Regel
> if (jahr%4==0 && (jahr%100!=0 || jahr%400==0))
für alle vorherigen Jahre rechnest du dagegen pauschal jahreSet1900/4 Schalttage dazu, das kann doch nicht gutgehen,

du musst pro Jahr genau wissen, ob ein Schalttag vorliegt oder nicht, entweder die Information irgendwo ablegen
oder ruhig aktuell neu berechnen, dafür brauchst du eine Schleife, alle Jahre durchlaufen und jeweils mit kompliziertem if Schalttag drauf rechnen oder nicht,

übrigens ist fürs aktuelle Jahr der Schalttag nur dann interessant, wenn das Datum im März oder später liegt (*)

der Rest mag stimmen wenn du vom richtigen Wert für 1.1.1900 ausgehst,
bzw. du kannst das letzte switch ja ruhig wieder vom heutigen Tag aus korrekt einstellen,

wenn dann ein Datum in 2004 nicht klappt dann ist das ein etwas großer Sprung, versuche danach 2007 und je nachdem wann es klappt und wann nicht das Intervall halbieren, bis du irgendwann zwei Tage findest, an denen es stimmt und direkt daneben nicht,

bestimmt sind das Jahres- oder Monatswechsel, z.B. wenn du die (*)-Regel vergisst
und zum 1.1. eines Schaltjahres einen Schalttag dazurechnest obwohl der 1.1. doch nur einen Wochentag nach dem 31.12. des letzen Jahres liegt,
der 1.3. liegt dagegen in einem Schaltjahr korrekt 2 Tage nach dem 28.2.



-------

Tipp:
beim 100fachen testen kann es sehr nerven, ständig dasselbe einzutippen,
es ist überhaupt nicht schlecht, erstmal
> int jahr = 2000;
> int monat = 1;
> int tag = 17;
im Programm stehen zu haben, die Scanner-Eingabe kannst du ganz am Ende wieder einbauen/ solange auskommentieren
 
Zuletzt bearbeitet von einem Moderator:

Lybrial

Bekanntes Mitglied
Also das mit allen Schaltjahren insgesamt hatte ich schon, nur da wurde
das Programm noch "falscher", da hat dann kein Tag mehr gestimmt.

Java:
for (int i = 1900; i < jahr; i++)
{
	if (jahr%4==0 && (jahr%100!=0 || jahr%400==0))  
       {                                                                  
		wochentag++;
       }
}
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Also das mit allen Schaltjahren insgesamt hatte ich schon, nur da wurde
das Programm noch "falscher", da hat dann kein Tag mehr gestimmt.

Java:
for (int i = 1900; i < jahr; i++)
{
	if (jahr%4==0 && (jahr%100!=0 || jahr%400==0))  //prüfen ob eingegebenes Jahr ein schaltjahr ist
       {                                                                  
		wochentag++;
       }
}
Dann schau Dir mal Deine Schleife bzw. die Bedinung in der Schleife an.
Bzw. lies mal den Kommentar hinter der Bedingung. Es macht ja keinen Sinn für jedes Jahr von 1900 bis zum eingebenen zu prüfen, ob das eingegebene Jahr ein Schaltjahr ist ==> es geht ja um die Jahre davor und nicht um das eingegebene Jahr.
 

Lybrial

Bekanntes Mitglied
Ja dann passt die Schleife doch, ein Schaltjahr hat 366 statt 365 Tage, deshalb
muss ich jedes Jahr testen, ob es ein Schaltjahr war außer das aktuell abgefragte
Jahr, da das gesondert berechnet wird. Und für jedes Schaltjahr muss ich die Tage
insgesamt um 1 erhöhen Der Kommentar ist ein wenig verwirrend
gebe ich zu, weil ich die Bedingung einfach von der anderen Bedingung kopiert habe^^
Editier ich sofort weg^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
M Datum und Stunde als String ausgeben Java Basics - Anfänger-Themen 15
C Date() ->das Datum von gestern ausgeben Java Basics - Anfänger-Themen 11
G Datum und Uhrzeit in einem String suchen und ausgeben Java Basics - Anfänger-Themen 2
T mysql aktuelles datum ausgeben Java Basics - Anfänger-Themen 2
G Datum in Wochentag ausgeben Java Basics - Anfänger-Themen 3
C Datum abfragen und ausgeben Java Basics - Anfänger-Themen 4
R Konstruktor mit Datum Java Basics - Anfänger-Themen 17
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
L Datum - Monat und Jahr werden falsch angezeigt Java Basics - Anfänger-Themen 4
T Datum als Variable wert Java Basics - Anfänger-Themen 4
T Datum in die als Variabelwert Java Basics - Anfänger-Themen 5
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Datum und Uhrzeit Java Basics - Anfänger-Themen 4
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
B Datum in dieser Range SQL? Java Basics - Anfänger-Themen 3
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
B Termine (Datum erstellen), Abhängig von Intervallen Java Basics - Anfänger-Themen 0
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Datum umformatieren Java Basics - Anfänger-Themen 2
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
M Datum serialisieren Java Basics - Anfänger-Themen 1
S Datum einlesen Java Basics - Anfänger-Themen 1
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
M Methoden Aus Timestamp das Datum berechnen Java Basics - Anfänger-Themen 3
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
T Datum mit einem Datums-Bereich vergleichen Java Basics - Anfänger-Themen 10
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
F Datum Differenz berechnen Java Basics - Anfänger-Themen 7
G String in Datum Java Basics - Anfänger-Themen 3
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
I Datum und Uhrzeitpattern von Locale Java Basics - Anfänger-Themen 7
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
I Datum ohne GregorianCalendar und co. Java Basics - Anfänger-Themen 3
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
D Wochentag für eingegebenes Datum bestimmen anhand von Formel Java Basics - Anfänger-Themen 2
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
M Aktuelles Datum in MySQL speichern Java Basics - Anfänger-Themen 11
P Datum umwandeln Java Basics - Anfänger-Themen 5
A Datum formatieren Java Basics - Anfänger-Themen 6
K Samstag einer Woche anhand eines Datum Java Basics - Anfänger-Themen 3
J Mit Datum rechnen Java Basics - Anfänger-Themen 11
B Datum ändern? Java Basics - Anfänger-Themen 8
Tally Methoden BlueJ - Datum als Kalendertag int - tagImJahr Java Basics - Anfänger-Themen 6
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
B Differenz von 2 Datum Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
D Hilfe beim SDF Datum Ausgabe Java Basics - Anfänger-Themen 20
A Plausibles Datum Java Basics - Anfänger-Themen 21
A Aktuelles Datum einfügen.. Java Basics - Anfänger-Themen 4
K Datum und Uhrzeit als Date Objekt Java Basics - Anfänger-Themen 10
K Java Datum berechnen Java Basics - Anfänger-Themen 13
L Datum probleme Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
S Schleife Datum Java Basics - Anfänger-Themen 11
S Datum ändern bzw. abziehen Java Basics - Anfänger-Themen 3
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
E Datentypen Unvollständiges Datum parsen Java Basics - Anfänger-Themen 8
T Heutiges datum OHNE Calendar? Java Basics - Anfänger-Themen 9
K Wie Datum um einen Tag erhöhen? Java Basics - Anfänger-Themen 4
A Datum Prüfen Java Basics - Anfänger-Themen 3
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
E Datum und Uhrzeit von UTC in MET umrechnen Java Basics - Anfänger-Themen 6
E Methoden Datum , Uhrzeit, Nachricht in txt Datei schreiben Java Basics - Anfänger-Themen 3
E Eigene class datum Java Basics - Anfänger-Themen 2
A Datum formatieren Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben