Anzeige:
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 16 bis 30 von 36

Thema: [JAVA] Systemdatum einlesen und damit arbeiten

  1. #16
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    Original geschrieben von peschmae
    @fs111



    Ich hab nie gesagt, dass ich unlogiken wie diese toll finde, nur:
    Wenn man in einem Programm irgendwo mal _ein_ Datum braucht, dann ist diese Klasse Overhead und die direkte Verwendung der API imho einfacher. Falls du das ganze Programm hindurch nur mit daten herumbastelst, mag das was anderes sein...

    Wenn du für jede unlogik eine solche, durchaus praktische Klasse basteln würdest ...


    MfG Peschmä
    Ich habe ja auch schon mehrfach erwähnt, dass sich diese Klasse hervorragend eignet, wenn man mit vielen Daten und auch im Zusammenspiel mit SQL arbeiten muss. Ich habe letztens (Gruppenarbeit) in der Uni eine Online Bibliothek mit Leihsystem, Mahnsystem, Kunden- und Medienverwaltung in Java Servlets geschrieben, und da kommen so viele Datumsoperationen vor, dass man echt froh ist, wenn man eine solche Klasse hat.

    Grüße fs111

  2. #17
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Die letzte Stelle der Jahreszahl:

    Code:
    int year3 = Calendar.getInstance().get(Calendar.YEAR) % 1000;
    @pfanni: Wenn du zb aus einer Zahl einen String erzeugen willst, dann versuche zuerst eine geeignete Methode der Klasse String zu finden, in diesem Fall
    valueOf(int)

    Die Konkatenation mit "" funktioniert zwar, ist aber "Teuer", d.h. es braucht unnötig Resourcen, weil zuerst "" angelegt wird, dann ein String mit der Zahl, dann ein String, der beide enthält.

    Das sind drei String Objekte, von denen dann zwei wieder vom Garbage Collector eingesammelt werden müssen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #18
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von fs111
    Wo siehst Du da denn Probleme? Wenn ich eine online Anwendung habe, dann ist ja für den Betreiber die Zeit/das Datum an seinem Ort interessant, und wenn es eine Anwendung auf der Maschine des Benutzers ist, dann stimmt das Datum ja ohnehin. Wo sollte da was schief laufen?
    Code:
    new GregorianCalendar();
    Preisfrage: was passiert, wenn der Calendar in der Locale des Benutzer kein GregorianCalendar ist?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #19
    Registrierter Benutzer
    Registriert seit
    06.10.2002
    Beiträge
    23
    @anda_skoa
    wie genau hätte ich mir mit diesem valueOf(int) denn meine Konstruktion mit den beiden "" sparen können?
    Hab mal in JAVA Docu geschaut und da steht zu dieser Methode folgender Satz drin "Returns the string representation of the int argument"
    Soweit ich das verstehe kann ich mir damit aus einem bestehenden String eine Stelle rauspicken und in einen neuen String stecken. Meine Konstruktion mit den "" hat aber doch erst mal einen ersten String mit der Zahl als Inhalt erstellen müssen. Ich bräuchte also eine Vereinfachung wie ich > int in String < umwandle.

    hab mal folgendes getestet:
    Code:
                                    String y = "" +year;
     		String testvalue = y.valueOf(3);
    		System.out.println("Test mit Value: " +testvalue);
    da bekomme ich dann als Ausgabe eine "3" wenn "int year=2003" war.

    Oder hab ich da jetzt ganz am Ziel vorbei geschossen und du wolltest mir was anderes sagen?

    cu
    Pfanni

  5. #20
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von Pfanni
    Ich bräuchte also eine Vereinfachung wie ich > int in String < umwandle.
    Genau das macht valueOf

    Die String Repräsentation ist ja genau das was du suchst

    Code:
    String y = String.valueOf(year);
    Eine andere Möglichkeit ist die Klasse Integer

    Code:
    String y = Integer.toString(year);
    Und wenn du vorher das Jahr module 1000 rechnest (Der Rest der Division durch 1000), dann enthält der String y gleich nur die letzte Zahl

    Code:
    String y = String.valueOf( year % 1000 );
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #21
    Registrierter Benutzer
    Registriert seit
    06.10.2002
    Beiträge
    23
    @anda_skoa
    vielen Dank für dei erneute Hilfe
    Da wäre ich alleine nie drauf gekommen. Aber ich stehe ja noch am Anfang, mit der Zeit werde ich das schon noch gebacken kriegen (muss ich ja schließlich sonst bekomme ich noch Probs mit meinem Prof)

    Gruß
    Oceanman

  7. #22
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    Original geschrieben von anda_skoa
    Code:
    new GregorianCalendar();
    Preisfrage: was passiert, wenn der Calendar in der Locale des Benutzer kein GregorianCalendar ist?

    Ciao,
    _
    Ich verstehe Dein Problem immer noch nicht. Wieso sollte es kein Gregorian Calendar sein?

    Gruß

    fs111

  8. #23
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    @anda_skoa:
    Und wenn du vorher das Jahr module 1000 rechnest (Der Rest der Division durch 1000), dann enthält der String y gleich nur die letzte Zahl
    dann aber doch lieber modulo 10, oder?
    Du kannst ja nicht davon ausgehen, dass das Programm vor 2010 verschrottet wird, und die letzte ziffer kriegst du dann so nicht mehr - ok, das kommt auch darauf an, was du (bzw er) eigentlich genau will(st)


    @fs111:
    Ich verstehe Dein Problem immer noch nicht. Wieso sollte es kein Gregorian Calendar sein?
    Muss ja nicht unbedingt...
    Allerdings ist dann der Code für die letzte Ziffer auch recht schwer zu schreiben, da z. B. der jüdische Kalender irgendwo beim Jahr 5000 steckt

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  9. #24
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    OK, sicherlich gibt es noch andere Datumszählungen, als unsere (jüdische, chiniesischen, etc.), aber man sollte doch wohl bei einer Anwendung davon ausgehen, dass sie den weltweiten Standard des westlichen Kalenders verwendet. Ich kann mir nicht vorstellen, dass bspw. Webserver in Israel mit jüdischem Datum laufen, das ist ganz sicher alles auf "unser" Datum genormt. Das würde ja auch sonst ein ganz schönes durcheinander geben...

    fs111

  10. #25
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    schon so, aber es geht ja nicht zwingend nur um Webserver, aber grundsätzlich haste recht

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  11. #26
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von peschmae
    @anda_skoa:

    dann aber doch lieber modulo 10, oder?
    Du kannst ja nicht davon ausgehen, dass das Programm vor 2010 verschrottet wird, und die letzte ziffer kriegst du dann so nicht mehr - ok, das kommt auch darauf an, was du (bzw er) eigentlich genau will(st)
    Du hast recht, Modulo 10 natürlich.


    Muss ja nicht unbedingt...
    Allerdings ist dann der Code für die letzte Ziffer auch recht schwer zu schreiben, da z. B. der jüdische Kalender irgendwo beim Jahr 5000 steckt
    Nichts deso trotz ist die letzte Ziffer immer das Modulo 10 Ergebnis.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  12. #27
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von fs111
    OK, sicherlich gibt es noch andere Datumszählungen, als unsere (jüdische, chiniesischen, etc.), aber man sollte doch wohl bei einer Anwendung davon ausgehen, dass sie den weltweiten Standard des westlichen Kalenders verwendet. Ich kann mir nicht vorstellen, dass bspw. Webserver in Israel mit jüdischem Datum laufen, das ist ganz sicher alles auf "unser" Datum genormt. Das würde ja auch sonst ein ganz schönes durcheinander geben...
    Du hast recht, sollen sich gefälligst alle nach uns richten.
    Wer braucht schon i18n und l10n

    Am Besten wir definieren alle nicht ASCII Zeichen auch gleich als ungültig.
    Ah, das muss natuerlich dann ungueltig heissen, Umlaute gibts ja im normalen 127bit ASCII nicht, aber wer braucht die schon.
    Selber schuld, wenn man andere Zeichen in der Sprache hat.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  13. #28
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    Was hat denn bitte ein Zeichensatz mit dem Datumsformat zu tun? Du weichst meiner Nachfrage aus. Du willst mir also sagen, dass ich mein Java VM bspw. in Israel keinen Gregorian Calendar bietet, oder wie?

    fs111

  14. #29
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von fs111
    Was hat denn bitte ein Zeichensatz mit dem Datumsformat zu tun? Du weichst meiner Nachfrage aus. Du willst mir also sagen, dass ich mein Java VM bspw. in Israel keinen Gregorian Calendar bietet, oder wie?
    Nein, die JVM kenn immer einen GregorianCalendar.

    Mein vorheriges Posting soltle nur zeigen, was die Grundaussage ist, wenn man auf Internationalization und Localization per definitionem verzichtet, weil "eh alle meine Settings benutzen"

    Das ist, so finde ich zumindest, eine ziemlich arrogante Anmaßung.

    Wir als deutschsprachige Europäer haben einfach Glück, dass praktisch alle Basistechnologien für unseren Kutlurkreis entwickelt wurden und unsere Sprache wenig Abweichungen von Englisch aht und darum im ertweiterten ASCII enthalten ist.

    Wenn der Aufwand für eine korrekte Lösung sehr hoch ist, kann man schon eine weiger optimale Lösung machen, solange man sich bewußt ist, dass man sich auf eine bestimmte Untermenge aller Locales einschränkt.

    Java bietet praktisch für alle problematischen Bereiche Fectories oder Factorymethden, um die Erzeugung korrekter Objekte zu vereinfachen.

    Im Falle des Calendars gibt es drei Factory Methoden, die drei Versionen von getInstance.

    Mir kann wirlich niemand erzählen, dass
    Code:
    Calendar cal = Calendar.getInstance();
    so viel komplizierter als
    Code:
    Calendar cal = new GregorianCalendar();
    ist, dass es die Festlegung auf diesen speziellen Calendar rechtfertigen würde.

    Eigentlich halte ich die allgemeine Variante sogar für einfacher.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  15. #30
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    Hier maßt sich keiner etwas an! Wenn Du so argumentierst, dann möchte ich aber bitte auch an meiner Datenbank immer mein deutsches Datum eingebn können, das ist ja wohl eine riesen Sauerei, dass ich mich da umstellen muss!

    Nein mal im Ernst, es gibt nun mal Einschränkungen, mit denen man leben muss. Ich verlange ja auch nicht, dass mein BIOS einen dt. Zeichensatz auf der Tastatur hat.

    Ich habe ja schon mehrfach beschrieben, in wie weit diese Klasse vorallem in der Zusammenarbeit mit einer DB hilfreich ist. Eine DB wird immer ihr Datum verlangen, also habe ich hier eine Klasse, wo ich _mein_ Datum oben reinschmeiße, und es unten SQL konform rauskommt. Außerdem kann diese Klasse den Intervall zwischen zwei Tagen berechen, und noch vieles mehr. Also mach das Teil hier nicht so schlecht. Diese Klasse macht einem das Leben wirklich einfacher. Ich weiß ja nicht, wie viel Du schon mit Datumsberechnungen gearbeitet hast, aber das kann einem echt den letzten Nerv rauben, wenn man versucht sowas alles zu Fuß zu implementieren. Außerdem wird der Ursprungsposter ja wohl kaum schon nächste Woche das Mega Riesen Projekt programmieren, welches in 153 verschiedenen Sprachen erscheint, und 12 verschieden Datumsformate/Zählweisen abfangen muss.

    Ich habe nur gesagt, dass es einem einfacher gemacht wird, und ich finde diese Klasse weiterhin sehr gut!

    fs111

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •