Aktuelles Datum speichern

pozzitiv

Mitglied
Hi,

ich hab ein Problem zu verstehen, wie ich in Java aktuelles Datum speichern kann und dieses später wieder abrufen. Es geht nämlich darum, dass z.B bei einer Bestellung als default-Wert aktuelles Datum gespeichert wird, oder der Benutzer gibt im Sonderfall selber ein Datum ein. Die ganze Aufgabe ist hier zu finden Prog II.

Ich habe es mir so gedacht, das ich die aktuellen tag, monat und jahr in Hilfsvariablen speichern kann, z. B so
Java:
static Calendar cal = Calendar.getInstance ();
static int tag = cal.get( Calendar.DAY_OF_MONTH );
static int monat = (cal.get( Calendar.MONTH ) + 1 );
static int jahr = cal.get( Calendar.YEAR );
aber das geht ja nicht, da die Variablen sich immer wieder aktualisieren

Könnt ihr mir vielleicht ein Beispiel geben?
 

OliverKroll

Aktives Mitglied
Die Variablen der Klassen Calendar und Date aktualisieren sich nicht selbständig:
Java:
package pack1;

import java.util.*;

public class Hauptprogramm 
{
	public static void main(String[] args)
	{
		Calendar jetzt1;
		Date jetzt2;
		
		jetzt1=Calendar.getInstance();
		jetzt2=jetzt1.getTime();
		
		while(true)
		{
			System.out.println(jetzt1.get(Calendar.SECOND)+" "+jetzt2.getSeconds());
		}
	}
}
Die Variablen der Klassen Calendar und Date geben immer die gleiche Sekunde aus.

Du brauchst Tag, Monat und Jahr nicht einzeln zu speichern, das macht die Klasse Date oder Calendar für dich. Im Konstruktor deiner Klasse Bestellung würdest die schreiben:
Java:
package pack1;

import java.util.*;

public class Bestellung 
{
	private Date datum;
	
	public Bestellung()
	{
		datum=new Date();
	}
}

Calendar ist eigentlich die bessere Klasse (Date ist teilweise bereits deprecated/unerwünscht), aber Date ist in deiner Aufgabenstellung vorgesehen.
:)
 

pozzitiv

Mitglied
Im Konstruktor deiner Klasse Bestellung würdest die schreiben:
Java:
package pack1;

import java.util.*;

public class Bestellung 
{
	private Date datum;
	
	public Bestellung()
	{
		datum=new Date();
	}
}

Calendar ist eigentlich die bessere Klasse (Date ist teilweise bereits deprecated/unerwünscht), aber Date ist in deiner Aufgabenstellung vorgesehen.
:)

Aber in diesem Fall ist mein Bestelldatum immer das aktuelle Datum. Also wenn ich z.B sowas mache
Java:
Bestellung bestellung01 = new Bestellung();
System.out.println(bestellung1.getDat());
ist mein Bestelldatum immer aktuell. Ich brauche aber, dass das Datum gespeichert wird, wo ich das Objekt bestellung1 erzeuge. Ich komme aber nicht drauf, wie ich diese speichern kann. ???:L
 

Michael...

Top Contributor
In Deinem ersten Code verwendest Du statische Variablen, das kann ja nicht so funktionieren wie Du willst.
Im zweiten Fall gibt's Du ja unmittelbar nach dem Du die Bestellung erzeugt (und damit das Datum gesetzt) hast das Datum wieder aus --> entspricht dem aktuellen Datum.

Zeig doch mal Deinen momentanen Code.
 
T

Tomate_Salat

Gast
Zeig mal die komplette Klasse, denn eigentl. sollte das funktionieren:

Java:
import java.util.Date;

public class Main 
{
    private Date current;
    
    public static void main(String[] args) 
    {    
        Main main   = new Main();
        
        main.doOrder();
        
        System.out.println( main.getOrderDate() );
        
        try { Thread.sleep(2000); } catch(InterruptedException e) { e.printStackTrace(); }
        
        System.out.println( main.getOrderDate() );
        
        main.doOrder();
        
        System.out.println( main.getOrderDate() );
    }
        
    public void doOrder()
    {
        current = new Date();
    }
    
    public Date getOrderDate()
    {
        return current;
    }
}

Ausgabe:
Code:
Thu Apr 22 09:21:42 CEST 2010
Thu Apr 22 09:21:42 CEST 2010
Thu Apr 22 09:21:44 CEST 2010
 

pozzitiv

Mitglied
Das ist die Klasse Bestellung
Java:
package weinvertrieb;
import java.util.Date;

public class Bestellung {
	
	private Weinflasche weinflasche;
	private int anzahl; // Flaschen / Kartons / Paletten
	private AVerpackungseinheit verpackung;
	private Date current; // Bestelldatum
	private AKunde kundenTyp;	
	
	private double gesamtPreis; // ohne Rabattabzug
	private double gewaehrterRabatt; // Rabatt abhängig vom Kunden
	
	
	public Bestellung (Weinflasche weinflasche, int anzahl, AVerpackungseinheit verpackung, Date current, AKunde kundenTyp){
		this.weinflasche=weinflasche;
		this.anzahl=anzahl;
		this.verpackung=verpackung;
        this.current=current;
		this.kundenTyp=kundenTyp;
	}
	
	public Bestellung(){
		
		this(new Weinflasche(), 1, new Palette(), new Date(), new Grossverbraucher());		
	}
		
	public int getAnzahl() {
		return anzahl;
	}

	public void setAnzahl(int anzahl) {
		this.anzahl = anzahl;
	}

	public Date getDate() {
		return current;
	}

	public void setDate(Date current) {
		this.current = current;
	}
	
	
	public double berechneGesamtpreis(){
		gesamtPreis=(double)anzahl * verpackung.getAnzahlFlaschen() * weinflasche.getPreis();
		return gesamtPreis;
	}
	
	public double berechneGewaehrterRabatt(){
		gewaehrterRabatt= (berechneGesamtpreis() * kundenTyp.getRabatt()) / 100 ;
		return gewaehrterRabatt;
	}
	
	public double berechneNettoPreis(){
		return berechneGesamtpreis() - berechneGewaehrterRabatt();
	}

	public String toString() {
		return "Bestellung [anzahl=" + anzahl + ", dat=" + current
				+ ", gesamtPreis=" + gesamtPreis + ", gewaehrterRabatt="
				+ gewaehrterRabatt + ", kundenTyp=" + kundenTyp
				+ ", verpackung=" + verpackung + ", weinflasche=" + weinflasche
				+ "]";
	}
}

muss ich also in der main-Klasse ein extra Date-Objekt erzeugen?
 
T

Tomate_Salat

Gast
Das ist die Klasse Bestellung

Die sollte so funktionieren. Aufgrund dessen, da [c]getDat[/c] jetzt [c]getDate[/c] heist und die Variablen nicht mehr [c]static[/c] sind, nehme ich mal an: du hast sie überarbeitet ;-)

muss ich also in der main-Klasse ein extra Date-Objekt erzeugen?
Was?Hä? Nein, die Main-Klasse von mir sollte nur ein Beispiel sein. Mir ging es darum, wie man [c]Date[/c] speicher und wieder aufrufen kann :-/
 

Wortraum

Bekanntes Mitglied
Abgesehen von der Namensgebung und der Parameteranzahl im Konstruktor sieht das doch gut und richtig aus.

Bei setDate(Date current) kann man aber jedes beliebige Datum übergeben. Wenn Du nur das aktuelle setzen möchtest, brauchst Du keinen Parameter:
Java:
public void setCurrentDate() {
    date = new Date();
}
 

pozzitiv

Mitglied
gut jetzt verstehe ich)) wie kann ich denn so ein Date selber eingeben, falls ich kein default konstruktor benutze? tt.mm.jjjj versteht compiler nicht
 

OliverKroll

Aktives Mitglied
Probier's mal damit:

Hauptprogramm:
Java:
package pack1;

import java.util.*;

public class Hauptprogramm2 
{
	public static void main(String[] args)
	{
		Bestellung bestellung1;
		
		bestellung1=new Bestellung();
		
		System.out.println(bestellung1.getDatum());
		
		bestellung1.setDatum(new Date(2010-1900,4-1,22,11,12,15));
		
		System.out.println(bestellung1.getDatum());
	}
}

Bestellung:
Java:
package pack1;

import java.util.*;

public class Bestellung 
{
	private Date datum;
	
	public Bestellung()
	{
		datum=new Date();
	}
	
	public Date getDatum()
	{
		return this.datum;
	}
	
	public void setDatum(Date datum_neu)
	{
		this.datum=datum_neu;
	}
}

Zum Konstruktor von Date siehe Java 2 Platform SE v1.4.2
:)
 

pozzitiv

Mitglied
ich würde das gerne erstmal über Konstruktor hinkriegen. also irgendwie so
Java:
		Bestellung bestellung1=new Bestellung(flasche1, 5, palette, tt.mm.jjjj, verbraucher1);

habe das hier gefunden
 

Michael...

Top Contributor
ich würde das gerne erstmal über Konstruktor hinkriegen. also irgendwie so
Java:
		Bestellung bestellung1=new Bestellung(flasche1, 5, palette, tt.mm.jjjj, verbraucher1);

habe das hier gefunden

Java:
Bestellung bestellung1=new Bestellung(flasche1, 5, palette, new Date(2010-1900, 3, 22), verbraucher1);
Aber Achtung der Date Konstruktor ist deprecated um man sollte sowas eher über Calendar erzeugen.
 

Wortraum

Bekanntes Mitglied
Java:
Bestellung bestellung1=new Bestellung(flasche1, 5, palette, new Date(2010-1900, 3, 22), verbraucher1);
Aber Achtung der Date Konstruktor ist deprecated um man sollte sowas eher über Calendar erzeugen.
Das wollte ich auch gerade noch einwenden. Date ist nicht mehr viel mehr als ein Hüllobjekt, das einen long-Wert mit Millisekunden kapselt. Dafür kann man es auch verwenden, aber sobald man mit einzelnen Tagen oder mit Jahren hantiert, gleich, ob man sie nun setzen oder aus den Millisekunden berechnen lassen möchte, sollte man zu Calendar greifen.
 

w0ddes

Bekanntes Mitglied
Dass Date teilweise deprecated ist haben glaub inzwischen alle verstanden.. aber in seiner Aufgabenstellung steht es nunmal als Attribut so:

Java:
private Date datum; // Bestelldatum
also muss er Date verwenden ;)
 

Wortraum

Bekanntes Mitglied
Die Prof hat Date als Datentyp vorgegeben. Ich will Rad nicht neu erfinden :)
Sehr klug, aber kaputte Räder sollte man trotzdem nicht wiederverwenden. „Kein Trinkwasser“ in einer öffentlichen Toilette hat ebenso viel Sinn wie „@deprecated“ über einer Methode.

Generell halte ich es für keine gute Idee, das Datum als Zeichenkette zu übergeben und diese dann als Datum zu interpretieren, wenn man doch gleich das Datum übergeben könnte. Die eigenen Klassen, die man programmiert, erledigen sonst irgendwann zu viele Aufgaben selbst, werden groß, unhandlich, unverständlich, komplex und unflexibel.

Also wenn man ein Objekt erstellt, entweder das aktuelle Datum automatisch setzen oder aus einem Parameter entgegennehmen. Und für alles, was nicht mit Millisekunden zu tun hat, auf keinen Fall Date, sondern Calendar nutzen.
 

pozzitiv

Mitglied
ich wollte jetzt mit Calendar das aktuelle Datum auslesen aber mit
Java:
System.out.println( Calendar.DAY_OF_MONTH + "." + (Calendar.MONTH+1) + "." + Calendar.DAY_OF_MONTH );
kriege ich 5.2.5. was stimmt denn nicht?
 

Michael...

Top Contributor
Du kannst ja nicht einfach die statischen Variablen der Klasse auslesen und erwarten, dass da was sinnvolles rauskommt ;-)

Du musst eine Instanz von Calender erzeugen
Java:
Calendar calendar = Calendar.getInstance();
System.out.println(DateFormat.getDateInstance().format(calendar.getTime()));
Wenn Du einen konkreten Wert auslesen willst, z.B. Tag des Monats:
Java:
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
 

Wortraum

Bekanntes Mitglied
ich wollte jetzt mit Calendar das aktuelle Datum auslesen aber mit
Java:
System.out.println( Calendar.DAY_OF_MONTH + "." + (Calendar.MONTH+1) + "." + Calendar.DAY_OF_MONTH );
kriege ich 5.2.5. was stimmt denn nicht?
Alles. Was Du ausgibst, sind einfach nur Indizes oder Kennummern irgendwelcher Daten oder Felder – was genau damit intern gemacht wird, weiß ich nicht, und es spielt auch keine Rolle. Was Du eigentlich wolltest, ist so etwas:
Java:
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH) + 1;
int year = cal.get(Calendar.YEAR);
System.out.println(day + "." + month + "." + year);

Und wie schon mehrfach gesagt wurde, geht so etwas mit SimpleDateFormat sehr einfach.
Java:
SimpleDateFormat sdf = new SimpleDateFormat("dd.mm.YYYY");
Date now = new Date();
System.out.println(sdf.format(now));
Oder Du machst es wie Michael, dann ist die Darstellung aber abhängig von der Lokalisierung.
 
Zuletzt bearbeitet:
0

086033

Gast
Ich muss bei einem Projekt das aktuelle Ausleihdatum speichern (was ich mit den obigen Erklärungen hin kriegen sollte) aber zusätzlich noch das Rückgabedatum berechnen lassen. Also Ausleihdatum + 14 Tage. Wie mache ich das nun?

Sorry, das ist die erste Klasse, welche ich aus der Bibliothek importiere und kenne mich daher noch nicht so aus mit Klassen interpretieren.

Zudem, sollte zwar nicht in diesen Thread, habe ich ein kleineres Problem. Die Aufgabe ist: "Es soll eine Methode
[Java]ausgeben(Medium medium)[/code] implementiert werden, welche alle Datenfelder aller Medien der Kategorie medium ausgibt."

Nebst der Klasse Datenbank, habe ich eine Superklasse Medium und Subklassen CD, DVD, ... Ich verstehe die Aufgabe nun so, dass ich als Parameter z.B. CD eingeben kann und mir alle Datenfelder der Objekte der Klasse CD ausgegeben werden. Mein Problem ist aber, dass ich als medium nur Objekte angeben kann und keine Klasse (z.B. CD).

Ich wollte folgendermassen vorgehen:
Java:
public class Datenbank

public void ausgeben(Medium medium)
    // bsp. für CD... 
{    
    if (medium.equals(CD)) {
        for(Medium m : medien) {
            if (m instanceof CD) { 
            System.out.println(m);
            }
        }
    }
}

Besten Dank! für eure Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Aktuelles Datum in MySQL speichern Java Basics - Anfänger-Themen 11
R aktuelles Datum formatieren und in einem String speichern Java Basics - Anfänger-Themen 5
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
A Aktuelles Datum einfügen.. Java Basics - Anfänger-Themen 4
J Aktuelles Datum per Java an MsSQL übergeben? Java Basics - Anfänger-Themen 2
G Date Objekt für aktuelles Datum erzeugen Java Basics - Anfänger-Themen 9
P Aktuelles Datum aus dem Web beziehen Java Basics - Anfänger-Themen 2
F aktuelles Datum ermitteln Java Basics - Anfänger-Themen 8
P Aktuelles Datum/Zeit in GMT? Java Basics - Anfänger-Themen 2
T mysql aktuelles datum ausgeben Java Basics - Anfänger-Themen 2
J Aktuelles Datum Java Basics - Anfänger-Themen 3
S Suche aktuelles 2D Grafik Tutorial Java Basics - Anfänger-Themen 5
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
O Aktuelles Verzeichnis Runtime.getRuntime().exec Java Basics - Anfänger-Themen 6
T aktuelles jahr ermitteln (und nur dies) Java Basics - Anfänger-Themen 3
G aktuelles verzeichnis finden Java Basics - Anfänger-Themen 5
T aktuelles Programmverzeichnis anzeigen Java Basics - Anfänger-Themen 2
T aktuelles Jahresdatum? Java Basics - Anfänger-Themen 4
A Suche aktuelles J2SE/JDK auf CD Java Basics - Anfänger-Themen 6
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
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
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
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
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
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
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
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
B 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
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
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

Ähnliche Java Themen

Neue Themen


Oben