snopsy Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Hi, so, jetzt will ich auch mal wieder was in Java probieren, damit ich nicht ganz aus der Übung komme. Wie kann ich denn das aktuelle Datum abfragen? Ohne Uhrzeit. Ich will nur das Datum. z.B.: 21.05.2002 :confused: Kann mir hier jemand weiterhelfen? Wäre super. Gruß Snopsy Zitieren
Debi@N Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 huhu *g* eigentlich ist es ganz simpel: <!-- ========JavaScript-KALENDER ============ --> <script LANGUAGE="JavaScript"> <!-- hide function w(text){ document.write(text) } function MakeArray(n){ this.length = n; for (var i = 1; i <= n; i++) this=0; return this; } monat=new MakeArray(12); monat[0]="Januar"; monat[1]="Februar"; monat[2]="März"; monat[3]="April"; monat[4]="Mai"; monat[5]="Juni"; monat[6]="Juli"; monat[7]="August"; monat[8]="Sept."; monat[9]="Okt."; monat[10]="Nov."; monat[11]="Dez."; heute = new Date(); w("</font><font color=black face=arial><font size=2><b>"); // Schriftgroesse Datum w(heute.getDate()); w(". <font size=2>"); // Schriftgroesse Monat w(monat[heute.getMonth()]); w(" 2002</FONT></font>"); // end-hide --> </script> Wenn du etwas nicht verstehst... Schreib einfach :OD Zitieren
Debi@N Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Oder hier der etwas komplexere mit zugleich gewissen besonderen Datums: var mydate=new Date() var year=mydate.getYear() if (year < 1000) year+=1900 var day=mydate.getDay() var month=mydate.getMonth()+1 if (month<10) month="0"+month var daym=mydate.getDate() if (daym<10) daym="0"+daym var ftag="" if (daym==1 && month==1) {ftag="Neujahr"} if (daym==14 && month==2) {ftag="Valentinstag"} if (daym==3 && month==10) {ftag="Deutsche Einheit"} if (daym==1 && month==11) {ftag="Allerheiligen"} if (daym==21 && month==11) {ftag="Buß und Bettag"} if (daym==6 && month==12) {ftag="Nikolaus"} if (daym==24 && month==12) {ftag="Heiligabend"} if (daym==25 && month==12) {ftag="1.Weihnachten"} if (daym==31 && month==12) {ftag="Silvester"} if (daym==27 && month==1) {ftag="W.A.Mozart"} if (daym==21 && month==3) {ftag="J.S.Bach"} if ((month==4 && day==0) && (daym>0 && daym<8)) {ftag="Sommeranfang"} if ((month==5 && day==0) && (daym>7 && daym<16)) {ftag="Muttertag"} if ((month==6 && day==0) && (daym>15 && daym<24)) {ftag="Vatertag"} if ((month==10 && day==0) && (daym>24 && daym<=31)) {ftag="Sommerende"} document.write("<font color=\"#123456\"><font size=+0>"+daym+"."+month+"."+year+" "+ftag+"</font></font>") Zitieren
Jaraz Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Original geschrieben von K.D.C.1994 huhu *g* eigentlich ist es ganz simpel: Huhu LoL!!! Javascript != Java zum Problem: Date dtDate = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); String nowDate = sdf.format(dtDate); System.out.println(nowDate); Gruß Jaraz Zitieren
Debi@N Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 warum soll man sich es extra schwer machen und mit java rumwerkeln wenn man sich so ein kleines simples script schrubben kann *gg* Aber nuja ;o) Wollt ja nur helfen Zitieren
Jaraz Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Original geschrieben von Debi@N warum soll man sich es extra schwer machen und mit java rumwerkeln wenn man sich so ein kleines simples script schrubben kann *gg* Aber nuja ;o) Wollt ja nur helfen Das habe ich auch nicht bezweifelt, aber wenn ich nur das Datum wissen will, reicht es den Mauszeiger rechts unten in die Ecke von Windows zu schieben. Da er aber nun mal geschrieben hat, das er das aktuelle Datum mit Hilfe von Java wissen möchte und nicht mit Javascript, denke ich mal, das er ne Anwendung/Applet schreibt, wo er das benötigt. Außerdem ist es erschreckend, wie viele Fachinformatiker Java und Javascript in einen Hut stecken. :eek: Gruß Jaraz Zitieren
snopsy Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 Hi Jaraz, Danke für Deine Hilfe, dadurch bin ich jetzt schon ein gutes Stück weitergekommen. Ganz richtig. Ich will eine Anwendung schreiben. Allerdings ist der er eine sie Aber ist net so schlimm. Ich hab nur noch eine weitere Frage. Dieses Date dtDate = new Date(); hier gibt es 2 verschiedene einaml Date(int year, int month, int day) und zum anderen Date(long ...); welches ist denn hier das richtige und was muß ich dann in die Klammern schreiben? Denn hier wird ein Ausdruck verlangt. Ich muß hier ja irgendwelche int Werte bzw. einen long-Wert liefern. Danke & Gruß (die weibliche )Snopsy Zitieren
Jaraz Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Original geschrieben von snopsy Allerdings ist der er eine sie Aber ist net so schlimm. An die Möglichkeit hatte ich sogar beim schreiben gedacht, war aber zu faul alle er's durch er/sie oder ähnlich zu ersetzen, bzw nachzuschauen. Original geschrieben von snopsy Ich hab nur noch eine weitere Frage. Dieses Date dtDate = new Date(); hier gibt es 2 verschiedene einaml Date(int year, int month, int day) und zum anderen Date(long ...); welches ist denn hier das richtige und was muß ich dann in die Klammern schreiben? Denn hier wird ein Ausdruck verlangt. Ich muß hier ja irgendwelche int Werte bzw. einen long-Wert liefern. Danke & Gruß (die weibliche )Snopsy Date hat sogar 6 Konstruktoren. Für das aktuelle Datum reicht der parameterlose Konstruktor Date(). Ansonsten kannst du Date auch mit gegebenen Werten für Jahr, Monat, Tag initialisieren. Long repräsentiert dabei die abgelaufenen Millisekunden seit 1.1.1970 00:00:00, also ein sogenannter Timestamp. Gruß (der männliche) Jaraz Zitieren
Debi@N Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 wer hat gesagt das ich es gleich setzt oder verwechsele?? Ich hab doch nur mein kleines Script gepostet ;o) meine güte Zitieren
snopsy Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 Original geschrieben von Jaraz Date hat sogar 6 Konstruktoren. Für das aktuelle Datum reicht der parameterlose Konstruktor Date(). Ansonsten kannst du Date auch mit gegebenen Werten für Jahr, Monat, Tag initialisieren. Long repräsentiert dabei die abgelaufenen Millisekunden seit 1.1.1970 00:00:00, also ein sogenannter Timestamp. aha, danke. Ich habe gerade aus versehen das falsche Package importiert, dann kann das natürlich nichts werden mit dem parameterlosen Konstruktor Grüßle Zitieren
snopsy Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 Ich habe ja jetzt nun dieses berechnete Datum in einer String-Variablen. Nun will ich dieses Datum mit einem anderen Datum in einer anderen String-Variablen vergleichen in einer if-Anweisung Soweit ich weiß, kann man String-Variablen nicht mit dem ==-Operator vergleichen,oder?! Ich weiß da noch irgendwas mit equals. Wie geht das denn nochmals genau? Zitieren
snopsy Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 OK, diese Frage hat sich schon erledigt. Habs gerade selber hinbekommen!!! Zitieren
snopsy Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 Jetzt habe ich nochmals ein paar Fragen. kann ich das aktuelle Datum irgendwie hochzählen? Wenn ja wie? Ansonsten, wie kann ich das aktuelle Datum in die einzelnen Teile Tag, Monat und Jahr trennen und am Ende wieder zusammenführen? Ich vergleiche nämlich das aktuelle Datum mit einem definierten Datum. Wenn dieses nicht übereinstimmt, will ich das aktuelle Datum so lange hochzählen, bis es das definierte Datum erreicht hat. (in einer while-Schleife) Beim hochzählen will ich eine Variable count immer um 1 erhöhen. Danke & Gruß Snopsy Zitieren
Snowghost Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Für Datumsoperationen in Java verwendest du am besten die Klasse GregorianCalendar (ich glauche in java.util). Snowghost Zitieren
etreu Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Wenn du den String zerteilen willst, dann nimm mal StringTokenizer um das Datum zu teilen. Wenn du ihn wieder zusammensetzen willst, dann ist noch einfacher String=String1+String2+String3+.... Wenn du Rechenoperationen durchführen willst, wäre glaube ich der TIMESTAMP besser. Den müsstest du dann wieder in ein normales Datum umwandeln. Zitieren
Mirko Geschrieben 22. Mai 2002 Geschrieben 22. Mai 2002 Ich würde solche Operationen auch mit dem GregorianCalendar machen. Da kannst du das Datum einfach hochzählen (mit add(int, int)) und mit einem zweiten Calendar vergleichen. java.util.Date ist da doch ehr beschränkt... Zitieren
snopsy Geschrieben 22. Mai 2002 Autor Geschrieben 22. Mai 2002 Ich hab das ganze jetzt ein bißchen anders gelöst, weil ich teilweise nicht ganz klar gekommen bin, bzw. es nicht ganz das war, was ich wollte. Zumindest hab ich halt anders ne schellere lösung gefunden. Und zwar hab ich es so gelöst: Date dtDate = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); String nowDate = sdf.format(dtDate); String tag = nowDate.substring(0,2); String monat = nowDate.substring(3,5); String jahr = nowDate.substring(6,10);[/PHP] Hier wird das Datum aufgeteilt. Um das dann nachher hochzuzählen wird es in int umgewandelt und gezählt. Jetzt muß ich es noch wieder in String umwandeln und zusammensetzen, dann ist es fertig. Klappt wunderbar bis jetzt. Danke für Eure Hilfe Gruß Snopsy Zitieren
T´Pau Geschrieben 1. August 2003 Geschrieben 1. August 2003 *mal ein ganz altes Thema ausgrab* Ich habe gerade genau das selbe Problem und snopsy´s Lösung am Ende hat mir auch schon weitergeholfen. Aber leider steht da dann nicht mehr wie mal das Datum nun hochzählen kann, nachden es in den String zerlegt ist. Und vor allem wie ich es wieder zusammenfüge. Ich brauch das für mehrere sql Abfragen, in denen sowas stehen soll wie where datum like "heute", where datum like "morgen" und where datum like "diese woche" . Heute funzt jetzt auch ohne Probleme, aber wie ich das mit "diese Woche" hinbekommen soll weiss ich echt nicht. Zitieren
Peeter Geschrieben 1. August 2003 Geschrieben 1. August 2003 Schau dir mal den "GregorianCalendar" genauer an. Der hilft dir weiter. Da gibt´s ein Field namens "WEEK_OF_YEAR" welches "GregorianCalendar" von "Calendar" erbt. Das wird dir sicher weiter helfen. Peet Zitieren
Jaraz Geschrieben 1. August 2003 Geschrieben 1. August 2003 Das hängt davon ab, welche Datenbank und wie das Datum in der Datenbank gespeichert wird? Gruß Jaraz Zitieren
Peeter Geschrieben 1. August 2003 Geschrieben 1. August 2003 Das ist klar. Denn wenn da nur ein Datum in der Form TT.MM.JJJJ drin steht wird´s schon wieder ein bisschen komplizierter aber trotzdem lösbar. Also ertmal bräuchten wir die Infos in welcher Form das Datum gespeichert wird. Peet Zitieren
Gast roaxius Geschrieben 1. August 2003 Geschrieben 1. August 2003 Original geschrieben von T´Pau Aber leider steht da dann nicht mehr wie mal das Datum nun hochzählen kann, nachden es in den String zerlegt ist. Und vor allem wie ich es wieder zusammenfüge. Ich würde das gar nicht in mehrere Strings auseinandernehmen, sondern mit der methode add() aus der Klasse GregorianCalendar hochzählen. Du legst dir ein Objekt von dieser Klasse an und hast dann alle Werte wie DAY_OF_MONTH, MONTH, YEAR, WEEK_OF_YEAR. Dann vermeidest du nämlich unsinnige Werte wie z.B. vom 28.02.2003 auf den 29.02.2003, wenn du +1 Tag rechnest. Die Methode add() passt nämlich die anderen Datumswerte an. Du würdest dann also den 01.03.2003 erhalten. Ich brauch das für mehrere sql Abfragen, in denen sowas stehen soll wie where datum like "heute", where datum like "morgen" und where datum like "diese woche" . Heute funzt jetzt auch ohne Probleme, aber wie ich das mit "diese Woche" hinbekommen soll weiss ich echt nicht. Du wirst mit dem WEEK_OF_YEAR natürlich nur was anfangen können, indem du den Wert an den Wert, der in der DB steht, anpasst. z.B. mit SimpleDateFormat. Wenn in der DB nur Tagesdaten (01.03.2003, 02.03.2003...) stehen, dann kannst du z.B. in einem Intervall von 7 Tagen prüfen. Dann musst du definieren, wann bei dir die Woche anfangen soll. z.B. Montag Ist heute z.B. Mittwoch dann rechnest du z.B. add(DAY_OF_MONTH, -2) und Wochenanfang = Datumsobjekt; Dann hast du Montag. Dann rechnest du noch bis Sonntag (also das aktuelle Objekt +7) und kannst bei deiner SQL-Abfrage sowas wie where date between Wochenanfang (Montag) and Wochenende (Sonntag) machen. Das jetzt nur mal als Gedankenanstoss, ohne dass dies nun vom Code her stimmt. Musst du mal hier gucken: http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html Zitieren
Gast roaxius Geschrieben 1. August 2003 Geschrieben 1. August 2003 Ich habe dir mal eben eine Methode changeDate(int, int, int) geschrieben, die komfortabel alle Datumswerte ändern kann: import java.util.GregorianCalendar; import java.util.Calendar; import java.util.Date; public class MainMenu { /** changeDate(int, int, int) aendert das Datum um die angegebenen Werte * @param addToYear - aendert das Jahr * 0 = Jahr wird nicht geaendert * +n = Jahr wird um n erhoeht * -n = Jahr wird um n vermindert * * @param addToMonth - aendert den Monat * 0 = Monat wird nicht geaendert * +n = Monat wird um n erhoeht * -n = Monat wird um n vermindert * * @param addToDay - aendert den Tag * 0 = Tag wird nicht geaendert * +n = Tag wird um n erhoeht * -n = Tag wird um n vermindert * * Beispiel: Aktuelles Datum = 01.08.2003 * changeDate(0,0,1); --> Datum = 02.08.2003 * changeDate(1,0,0); --> Datum = 01.08.2004 * changeDate(0,0,-2); --> Datum = 30.07.2003 */ public static void changeDate(int addToYear, int addToMonth, int addToDay) { Calendar calendar = new GregorianCalendar(); Date heute = new Date(); calendar.setTime(heute); System.out.println("Vor der Aenderung:"); System.out.println("YEAR : " + calendar.get(Calendar.YEAR)); System.out.println("MONTH : " + (calendar.get(Calendar.MONTH) +1)); System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH)); calendar.add(Calendar.YEAR, addToYear); calendar.add(Calendar.MONTH, addToMonth); calendar.add(Calendar.DAY_OF_MONTH, addToDay); System.out.println("\nNach der Aenderung:"); System.out.println("YEAR : " + calendar.get(Calendar.YEAR)); System.out.println("MONTH : " + (calendar.get(Calendar.MONTH) +1)); System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH)); } public static void main(String[] args) { changeDate(0,0,1); } } Ich hoffe, du kannst damit was anfangen. Wenn du dann mal postest, wie der Wochenwert in der DB steht und wie das Datum in der DB (z.B. 20030801) steht, dann kann ich dir auch noch die komplette Lösung posten. Hab ja Urlaub EDIT: Eins noch: Der MONTH fängt bei 0 an. Mit dieser Lösung hast du also heute den Wert 7 statt 8. Bei der Ausgabe musst du das anpassen. Hab ich aber mal schon gemacht bei den System.out.println() Zitieren
Gast roaxius Geschrieben 1. August 2003 Geschrieben 1. August 2003 Habe das mal mit Rückgabeparametern gemacht. Sollte so besser sein. Die Methoden getFirstDayOfWeek und getLastDayOfWeek ermitteln dir die Spanne, innerhalb der du bei between im where-Statement ermittelst. Der Code folgt gleich import java.util.GregorianCalendar; import java.util.Calendar; import java.util.Date; public class MainMenu { /** changeDate(Calendar, int, int, int) aendert das Datum um die angegebenen Werte * @param calendar - das zu aendernde Calendar-Objekt * * @param addToYear - aendert das Jahr * 0 = Jahr wird nicht geaendert * +n = Jahr wird um n erhoeht * -n = Jahr wird um n vermindert * * @param addToMonth - aendert den Monat * 0 = Monat wird nicht geaendert * +n = Monat wird um n erhoeht * -n = Monat wird um n vermindert * * @param addToDay - aendert den Tag * 0 = Tag wird nicht geaendert * +n = Tag wird um n erhoeht * -n = Tag wird um n vermindert * * Beispiel: Aktuelles Datum = 01.08.2003 * changeDate(0,0,1); --> Datum = 02.08.2003 * changeDate(1,0,0); --> Datum = 01.08.2004 * changeDate(0,0,-2); --> Datum = 30.07.2003 * * Returnwert = geaenderters Datum als Calendar Objekt */ public static Calendar changeDate(Calendar calendar, int addToYear, int addToMonth, int addToDay) { calendar.add(Calendar.YEAR, addToYear); calendar.add(Calendar.MONTH, addToMonth); calendar.add(Calendar.DAY_OF_MONTH, addToDay); return calendar; } public static Calendar getFirstDayOfWeek(Calendar calendar) { } public static Calendar getLastDayOfWeek(Calendar calendar) { } public static void main(String[] args) { Calendar cal = new GregorianCalendar(); Date heute = new Date(); cal.setTime(heute); System.out.println("\nVor der Aenderung:"); System.out.println("YEAR : " + cal.get(Calendar.YEAR)); System.out.println("MONTH : " + (cal.get(Calendar.MONTH) +1)); System.out.println("DAY_OF_MONTH: " + cal.get(Calendar.DAY_OF_MONTH)); cal = changeDate(cal,0,0,-2); System.out.println("\nNach der Aenderung:"); System.out.println("YEAR : " + cal.get(Calendar.YEAR)); System.out.println("MONTH : " + (cal.get(Calendar.MONTH) +1)); System.out.println("DAY_OF_MONTH: " + cal.get(Calendar.DAY_OF_MONTH)); } } Zitieren
Gast roaxius Geschrieben 1. August 2003 Geschrieben 1. August 2003 Und hier mal die versprochenen Methoden ins Blaue hinein: /** * Auf das Beispiel Montag = 1. Tag in der Woche bezogen! * Unter Java ist Sonntag = 1 und Samstag = 7 */ public static Calendar getFirstDayOfWeek(Calendar calendar) { switch (calendar.get(Calendar.DAY_OF_WEEK)) { case 1: calendar = changeDate(calendar,0,0,-6); break; // Sonntag auf letzten Montag case 2: break; // Montag bleibt Montag case 3: calendar = changeDate(calendar,0,0,-1); break; // Dienstag auf letzten Montag case 4: calendar = changeDate(calendar,0,0,-2); break; // ... case 5: calendar = changeDate(calendar,0,0,-3); break; case 6: calendar = changeDate(calendar,0,0,-4); break; case 7: calendar = changeDate(calendar,0,0,-5); break; } return calendar; } public static Calendar getLastDayOfWeek(Calendar calendar) { switch (calendar.get(Calendar.DAY_OF_WEEK)) { case 1: break; // Sonntag bleibt Sonntag case 2: calendar = changeDate(calendar,0,0,+6); break; // Montag auf nächsten Sonntag case 3: calendar = changeDate(calendar,0,0,+5); break; // Dienstag auf letzten Montag case 4: calendar = changeDate(calendar,0,0,+4); break; // ... case 5: calendar = changeDate(calendar,0,0,+3); break; case 6: calendar = changeDate(calendar,0,0,+2); break; case 7: calendar = changeDate(calendar,0,0,+1); break; } return calendar; } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.