Datum abfragen und vergleichen

Hallo,
ich würde gerne das aktuelle Datum abfragen und dann mit einem vorgegebenen Datum vergleichen. Komm aber nicht ganz weiter:

//vielleicht erst Locale.GERMANY abfragen?

Date heute = new Date();

//heute in short umwandeln?

Date fest = 01.09.06; //das geht so aber nicht?

//und jetzt noch heute mit fest vergleichen

mit System.currentTimeMillis() oder new Date() bekommst du das aktuelle Datum und mit new SimpleDateFormat(“EEE, d MMM yyyy HH:mm:ss Z”) kannst du es in jedes beliebige Format bekommen und die Strings kannst du vergleichen

Ok, schon mal danke, so siehts jetzt aus:

Date heute = new Date();
SimpleDateFormat df = new SimpleDateFormat("dd.MM.yy");
String formatiert;
formatiert = df.format(heute);
String fest ="01.09.06";
System.out.println(df.format(heute));

Jetzt steht in einem schlauen Buch:
int compareTo(Date t) = Liefert 0 bei Gleichheit oder einen Wert <0, wenn die aktuelle Instanz vor t liegt bzw. >0, wenn sie nach t liegt.

Wie bau ich das jetzt da ein? Sorry, steht heut etwas auf der Leitung… :frowning:

das geht nur wenn du das hast date.compareTo(date)
das bedeutet du lässt das eine Datum in dem format und vergleichst das einfach mit dem anderen Datum
heute.compareTo(anderesdatum);

import java.util.Date;


public class Vril
{

	
	public static void main(String[] args)
	{
		SimpleDateFormat df =  new SimpleDateFormat("dd.MM.yy");
		String vorgabe = "01.09.06";
		if(vorgabe.equals(df.format(new Date())))
		{
			System.out.println("Es ist nun der erste September im Jahre 2006");
		}
		else
		{
			System.out.println("Es scheint an anderes Datum als der erste September 2006 zu sein.");
		}
	}

}

Bitte nicht vor dem 01.09.06 auführen :wink:

Ok, aber wie erzeuge ich das anderesDatum?
String anderesDatum = “01.09.06”;
Wird ja so nicht gehen?

ne du kannst aber mit

Date anderesdatum = new SimpleDateFormat("dd.MM.yy").parse("12.11.83");

das andere Datum bekommen

Mit parse().

oeh was wollt ihr alle mit dem SimpleDateFormat ?

es geht doch darum, zwei Datumsangaben zu vergleichen.

Also entweder per compareTo

the value 0 if the argument Date is equal to this Date; a value less than 0 if this Date is before the Date argument; and a value greater than 0 if this Date is after the Date argument.

oder ueber after bzw before aus Date

und erzeugen wuerde ich nicht ueber das SDF sonder ueber ein Calendar Objekt

ja aber wenn du nur den String hast ist es meiner Meinung nach einfacher das über SDF zu machen

mhm stimmt - String uebersehen

Jetzt hätte ich noch eine kleine Frage zum Formatieren mit SimpleDateFormat! Und zwar wenn ich schreibe (“hh:mm:ss”) dann schreibt er mir 10:45:12 anstelle von 22:45:12 - Wie bekomme ich das hin, das es von 0-24 geht und nicht nur von 0-12?

Die API hätte dir gesagt, dass du einfach HH schreiben müsstest statt hh :wink:

Die API… :frowning:

Mit API habe ich auch noch problemen ;). Du bist nicht alleine hehe. Vor 3 Wochen habe ich dort 0 verstanden. Je besser man die Sprache Java versteht, desto besser versteht man die API.

Für euch zwei mal aus unserem Wiki von dem Herrn Beni glaub ich wars.

Api Tutorial

Hallo,
ich möchte mit einem Programm prüfen, ob vom Benutzer eingegebenes Datum korrekt ist.
Das Programm sieht folgendermaßen aus:

  Java Code:
 [LEFT]

[ol]
[li][FONT=Courier New]Calendar calendar = Calendar.getInstance();[/li][li] private static int dayOfMonth;[/li][li] private static int month;[/li][li] private static int year;[/li][li] private static boolean testCorrectDate(Date dateToCheck) {[/li][li] boolean correct;[/li][li] correct = false;[/li][li] if (dayOfMonth == Calendar.DAY_OF_MONTH && month == Calendar.MONTH[/li][li] && year == Calendar.YEAR) {[/li][li] correct = true;[/li][li] }[/li][li] return correct;[/li][li] }[/li][/ol]
[/FONT]
[/LEFT]

das funktioniert aber nicht und weiß auch nicht,wie ich das machen soll??
vllt hat jemand Ahnung?

Danke

was soll der Code machen?
da ist überhaupt nichts drin was Sinn ergibt
Du vergleichst deine Werte mit Konstanten

Ich habe eine, bisschen ältere Version:

  Java Code:
 [LEFT]

[ol]
[li][FONT=Courier New]private static boolean testCorrectDate(Date dateToCheck) {[/li][li] boolean correct;[/li][li] int[] maxDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };[/li][li] correct = false;[/li][li] // Test, if day is available in month[/li][li] if (dateToCheck.getMonth() > 0 && dateToCheck.getMonth() <= 12) {[/li][li] // correct month. now check day.[/li][li] if (dateToCheck.getDate() > 0[/li][li] && dateToCheck.getDate() < maxDays[dateToCheck.getMonth()]) {[/li][li] correct = true;[/li][li] }[/li][li] }[/li][li] return correct;[/li][li] }[/li][/ol]
[/FONT]
[/LEFT]

aber getMonth() und getDate() sind deprecated…
Ich möchte mit einer „neueren Version“ schreiben,aber weil ich java API nicht wirklick verstehe,Biete um Hilfe… :slight_smile:

Calendar war schon richtig, aber der Rest, naja :wink:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#get(int) das sollte dir weiter helfen