Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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>")

Geschrieben
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

Geschrieben
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* :D

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. :D

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

Geschrieben

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 ;):D)Snopsy

Geschrieben
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 ;):D)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):D Jaraz

Geschrieben
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 :D

Grüßle

Geschrieben

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?

Geschrieben

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

Geschrieben

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.

Geschrieben

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...

Geschrieben

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

  • 1 Jahr später...
Geschrieben

*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.

Geschrieben

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. :D

Das wird dir sicher weiter helfen.

Peet

Geschrieben

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

Geschrieben
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

Geschrieben

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()

Geschrieben

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));


    }

}


Geschrieben

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;

    }

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...