Timestamp in Java – Eine Herausforderung

Einen Timestamp in Java zu erzeugen ist gar nicht so schwer wie ich bisher angenommen hatte. Nachdem dieser Beitrag hier schon seit Anbeginn der Menschheit dieses Blogs hier herumliegt, hat vor wenigen Tagen ein Besucher seinen Unmut zum Ausdruck gebracht und einen Kommentar darüber erstellt, dass der Beitrag vollkommen unsinnig sei. Da er den Kommentar leider anonym verfasst hat, werde ich ihn nicht veröffentlichen und im Detail darauf eingehen. Jedenfalls hatte er mit einigen seiner Aussagen recht und meine ursprünglich verfasste Methode, um in Java einen Timestamp zu erzeugen, als schlecht bzw. unsinnig (ganz unsinnig ist sie nun auch nicht, immerhin liefert sie was man will) entlarvt. Wie dem auch sei schickte er mir auch gleich eine einfachere Lösung, die natürlich um ein vielfaches effektiver ist und ohne zusätzliche Packages auskommt.

Hier nun endlich die Auflösung:

System.out.println(System.currentTimeMillis() / 1000);

Das ist alles! Vielen Dank für die Belehrung. Für’s nächste Mal würde ich mir allerdings wünschen, dass derjenige nicht nur anonym den schlauen Kerl raushängen lässt, sondern auch „namentlich“ dazu steht.
Zu meiner Verteidigung möchte ich noch anmerken, dass ich damals, als ich den Timestamp brauchte, über die Suchmachschinen auch nur zu dem „ursprünglichen“ Ergebnis gekommen bin.


Um in PHP das aktuelle Datum als Timestamp (in diesem Fall den „gemeinen“ Unix-Timestamp) zu erzeugen, benötigt man einen einzigen „billigen“ Aufruf:

echo time();

In Java ist das schon etwas komplizierter…

java.util.Date heute = new java.util.Date();
System.out.println(new java.sql.Timestamp(heute.getTime()));

Das kann man auch noch mal komprimieren und sieht dann so aus:

System.out.println(new java.sql.Timestamp(new java.util.Date().getTime()));

Einfach, oder?!

War dieser Artikel hilfreich für Sie?
[Gesamt: 0 Durchschnitt: 0]

10 thoughts on “Timestamp in Java – Eine Herausforderung

  1. Harold sagt:

    NIce, danke!!!!

  2. yrow sagt:

    ich glaube du hast da einen kleinen (denk)fehler in deiner aussage…

    denn der code
    System.out.println(System.currentTimeMillis() / 1000);
    Timestamp timestamp = new Timestamp(new Date().getTime());
    System.out.println(timestamp);

    erzeug die ausgabe:
    1212478120
    2008-06-03 09:28:40.734

    des weiteren wenn man ein timestamp im datenbankbereich benutzt gibt es auch einige unterschiede in der DBMS-interpretation…

    wie gesagt, die frage ist immer was möchte ich mit dem timestamp anstellen. denn in vielen bereich ist es eine funktion die man besser durch Date().getTime() oder vergleichbarem ersetzen sollte. denn das arbeiten mit werten vom type long kann jede software, aber mit datumsangaben da wÀre ich vorsichtig… Auch wenn es merkwÃŒrdig klingt aber datumsarithmetik ist eine königsdisziplin der mathematisch programmierung die nicht jeder sauber beherrscht.

    mfg
    the head of buntklicken.de and Maintainer of R4DIUM-Project

    PS: wenn jetzt wer glaubt ich bin der unbekannte, nein ich bin es nicht.

  3. yrow sagt:

    hups,
    habe ich vergessen. dein „alter“ code ist doch nicht falsch?!?.

    denn der unbekannte, der dir diesen vorschlag gemacht hat liegt falsch. das objekt vom type timestamp ist nicht gleich vom type date. auch wenn die methoden das fast gleich sind (durch vererbungen bedingt). Sind es unterschiedlich klassen/objekte.

    einfacher test versuche mal in eine mySQL spalte die den type timstamp hat ein date-objekt zuschreiben ;-)
    sicherlich, wenn man mit „umwandlungen“ bzw. cast usw. arbeitet geht es. aber das ist ja nicht der sinn von OO-Proggen

    nebenbei:
    dein antispam-script gefällt mir, wo hast du das her bzw. wie nennt sich das script? auch wenn es simpel mit einem robot zu „knacken“ ist, ist die idee mit dem rechnen einfach genial und lustig. halt was völlig neues(für mich).

  4. Moritz T. sagt:

    Nichts für ungut aber wer die Zeile
    „System.out.println(new java.sql.Timestamp(new java.util.Date().getTime()));“
    als zu kompliziert empfindet, sollte vielleicht doch lieber bei PHP bleiben :).

    Java bietet dir halt für jede Anforderung Lösungen, anstatt dir ne 0815-Antwort zu geben.

  5. Johny sagt:

    Irgendwie stifftet dieser beitrag mir mehr Verwirrung als aufklärung, aber das Thema Timestamp ist eh verwirrend. Welchen Timestamp meinst du denn
    Unix Timestamp ( Sekunden seit 1970) oder MySQL Timestamp (yyyymmddhhiiss) ?
    vermutlich den unix timestamp da millisekunden …

  6. Anonym :-) sagt:

    wie wäre es mit NANNOSEKUNDEN ab 1970?:

    Nichts leicher als das:

    class NanoSecondsTimestampProvider {

    private long nanoSecondsOffset, nanoSecondsError;

    public NanoSecondsTimestampProvider() {
    long curMilliSecs0, curMilliSecs1,
    curNanoSecs, startNanoSecs, endNanoSecs;
    do {
    startNanoSecs = System.nanoTime();
    curMilliSecs0 = System.currentTimeMillis();
    curNanoSecs = System.nanoTime();
    curMilliSecs1 = System.currentTimeMillis();
    endNanoSecs = System.nanoTime();
    } while ( curMilliSecs0 == curMilliSecs1 );

    nanoSecondsOffset = 1000000L*curMilliSecs1 – curNanoSecs;
    nanoSecondsError = endNanoSecs – startNanoSecs;
    }

    public long getNanoSecondsDeviation() {
    return nanoSecondsError;
    }

    public long currentNanoSecondsTimestamp() {
    return System.nanoTime() + nanoSecondsOffset;
    }

    public static void main(String[] args) throws Exception{
    NanoSecondsTimestampProvider start = new NanoSecondsTimestampProvider();
    System.out.println(start.currentNanoSecondsTimestamp());
    System.out.println(System.currentTimeMillis());
    Thread.sleep(1);
    System.out.println(System.currentTimeMillis());
    NanoSecondsTimestampProvider stop = new NanoSecondsTimestampProvider();
    System.out.println(stop.currentNanoSecondsTimestamp());

    }
    }

  7. I took 1 st personal loans when I was 20 and it helped my family very much. But, I need the short term loan once more time.

  8. I guess that to receive the loan from creditors you must present a good reason. Nevertheless, one time I have got a short term loan, because I wanted to buy a bike.

  9. Trusti sagt:

    Great article, making a timestamp is really easy!
    Trusti

  10. chamo sagt:

    Very Nice…genau das hab ich seit ner Stunde im Internet gesucht!!
    Endlich komm ich mit meinem Schulprojekt weiter :D

    Tausend Dank!! :)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *