Skip to content
Snippets Groups Projects
Commit 109257b6 authored by Dennis Eisold's avatar Dennis Eisold
Browse files

Initial commit

parents
No related branches found
No related tags found
No related merge requests found
Pipeline #104 failed with stages
in 4 minutes and 30 seconds
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
package de.itstall;
/**
* Klasse zur validierung von Datumsangaben sowie der berechnung
*/
public class Datum {
private long tag = 1;
private long monat = 1;
private long jahr = 2000;
/**
* Gibt den Tag des Datums zurück
*
* @return : long : Tag
*/
public long getTag() {
return tag;
}
/**
* Gibt den Monat des Datums zurück
*
* @return : long : Monat
*/
public long getMonat() {
return monat;
}
/**
* Gibt das Jahr des Datums zurück
*
* @return : long : Jahr
*/
public long getJahr() {
return jahr;
}
/**
* Setzt den Tag des Datums
*
* @param tag : long : Tag
* @return : boolean
*/
public boolean setTag(long tag) {
if (tag > 0 && tag <= this.getMonthDays(this.getMonat())) {
this.tag = tag;
return true;
} else {
return false;
}
}
/**
* Setzt den Monat des Datums
*
* @param monat : long : Tag
* @return : boolean
*/
public boolean setMonat(long monat) {
if (monat > 0 && monat < 13) {
this.monat = monat;
return true;
} else {
return false;
}
}
/**
* Setzt das Jahr des Datums
*
* @param jahr : long : Tag
* @return : boolean
*/
public boolean setJahr(long jahr) {
if (jahr > 1582) {
this.jahr = jahr;
return true;
} else {
return false;
}
}
/**
* Formatiert die Ausgabe
* Bei false: tt.mm.jjjj
* Bei true: tt.MM.jjjj
*
* @param lAusgabe : String : formatiertes Datum
* @return
*/
public String toString(boolean lAusgabe) {
if (lAusgabe) {
return String.format("%02d. %s %4d", getTag(), this.getMonthName(this.getMonat()), getJahr());
} else {
return String.format("%02d.%02d.%4d", getTag(), getMonat(), getJahr());
}
}
/**
* Lädt die überladene toSting Funktion mit angabe von false
*
* @return : String: formatiertes Datum
*/
@Override
public String toString() {
return this.toString(false);
}
/**
* Berechnet ob das gesuchte Jahr ein Schaltjahr ist
*
* @param iJahr : int : Jahr
* @return : boolean
*/
public boolean getSchaltjahr(int iJahr) {
return iJahr % 4 == 0 && (iJahr % 100 != 0 || iJahr % 400 == 0);
}
/**
* Gibt die Anzahl der Tage des übergebenen Monats
*
* @param iMonat : long : gesuchter Monat
* @return : long : Anzahl der Tage
*/
public long getMonthDays(long iMonat) {
long iMonatsTage = 0;
if (iMonat == 1 || iMonat == 3 || iMonat == 5 || iMonat == 7 || iMonat == 8 || iMonat == 10 || iMonat == 12) {
iMonatsTage = 31;
} else if (iMonat == 4 || iMonat == 6 || iMonat == 9 || iMonat == 11) {
iMonatsTage = 30;
} else if (iMonat == 2) {
iMonatsTage = 28;
/** Schaltjahr berechnen. Danke an Freizeitrevue */
if (this.getSchaltjahr((int) this.getJahr())) {
iMonatsTage = 29;
}
}
return iMonatsTage;
}
/**
* Gibt den Namen des übergebenen Monats zurck
*
* @param iMonat : long : gesuchter Monat
* @return : String : Monatsname
*/
public String getMonthName(long iMonat) {
String strMonatsname;
switch ((int) iMonat) {
case 1:
strMonatsname = "Januar";
break;
case 2:
strMonatsname = "Februar";
break;
case 3:
strMonatsname = "März";
break;
case 4:
strMonatsname = "April";
break;
case 5:
strMonatsname = "Mai";
break;
case 6:
strMonatsname = "Juni";
break;
case 7:
strMonatsname = "Juli";
break;
case 8:
strMonatsname = "August";
break;
case 9:
strMonatsname = "September";
break;
case 10:
strMonatsname = "Oktober";
break;
case 11:
strMonatsname = "November";
break;
case 12:
strMonatsname = "Dezember";
break;
default:
strMonatsname = "";
}
return strMonatsname;
}
/**
* Addiert Jahre zum Datum hinzu
*
* @param iJahre : long : Jahre zum addieren
*/
public void addiereJahre(long iJahre) {
this.setJahr(this.getJahr() + iJahre);
}
/**
* Addiert Monate zum Datum hinzu
*
* @param iMonate : long : Monate zum addieren
*/
public void addiereMonate(long iMonate) {
long neuerMonat = this.getMonat() + iMonate;
if (neuerMonat > 12) {
this.addiereJahre(neuerMonat / 12);
this.setMonat(neuerMonat % 12);
} else if (neuerMonat <= 0) {
this.addiereJahre(neuerMonat / 12 - 1);
this.setMonat(12 + neuerMonat % 12);
} else {
this.setMonat(neuerMonat);
}
}
/**
* Addiert Tage zum Datum hinzu
*
* @param iTage : long : Tage zum addieren
*/
public void addiereTage(long iTage) {
long neuerTag = this.getTag() + iTage;
if (neuerTag > this.getMonthDays(this.getMonat())) {
do {
this.addiereMonate(neuerTag / this.getMonthDays(this.getMonat()));
neuerTag -= this.getMonthDays(this.getMonat());
} while (neuerTag / this.getMonthDays(this.getMonat()) < 1);
this.setTag(neuerTag % this.getMonthDays(this.getMonat()));
} else if (neuerTag <= 0) {
do {
this.addiereMonate(neuerTag / this.getMonthDays(this.getMonat()) - 1);
neuerTag -= this.getMonthDays(this.getMonat());
} while(neuerTag / this.getMonthDays(this.getMonat()) < 1);
this.setTag(this.getMonthDays(this.getMonat()) + neuerTag % this.getMonthDays(this.getMonat()));
} else {
this.setTag(neuerTag);
}
}
}
package de.itstall;
public class Main {
public static void main(String[] args) {
Datum datum = new Datum();
System.out.println("########################################");
datum.setJahr(2019);
datum.setMonat(10);
datum.setTag(28);
System.out.println(datum);
datum.addiereTage(-28);
datum.addiereMonate(-10);
datum.addiereJahre(-10);
System.out.println(datum);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment