Umwandlung einer Zeitinformation zu java.util.Date

Objektorientierte Programmiersprache auf Basis einer virtuellen Maschine (https://www.oracle.com/java/)
Antworten
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Umwandlung einer Zeitinformation zu java.util.Date

Beitrag von Dirty Oerti » Sa Jun 11, 2011 12:45 pm

Tag zusammen :)

Ich überlege gerade, wie es wohl am besten möglich ist, eine Zeitinformation, die mir in einem gewissen Format vorliegt, in ein brauchbares Datum, also z.B. dargestellt durch java.util.Date zu konvertieren.

Das Thema gehört eigentlich fast in Algorithmen und Konzepte, aber ich würde mich freuen, wenn die Standardbibliothek da schon vllcht ein paar Möglichkeiten hätte.

Und zwar liegt mir die (UTC) Zeit folgendermaßen vor:

YYDDD.DDDDD

YY bezeichnet dabei die letzten beiden Ziffern der Jahreszahl.
DDD.DDDDD bezeichnet den Tag des Jahres, der gebrochene Anteil bezeichnet dann logischerweise Stunden, Minuten, Sekunden, ... des jeweiligen Tages.

Also z.B:

11032.50000

Würde jetzt den 1. Februar 2011 12:00 UTC bezeichnen.

Mein Problem ist jetzt, dass wenn ich das händisch umrechnen will, ich gleichzeitig die komplette Betrachtung zwecks Schaltjahren und Co mit programmieren muss. Und darauf hab ich eigentlich weniger Lust ^^

Würde jemanden einfallen, wie das möglichst einfach zu bewerkstelligen ist?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Umwandlung einer Zeitinformation zu java.util.Date

Beitrag von cloidnerux » Sa Jun 11, 2011 1:23 pm

Die Berücksichtigung von allen möglichen Problemen, wie auch das mit dem Schaltjahr, lässt sich in 100 Zeilen code programmieren. Während du also auf eine Antwort wartest, hättest du es schon Programmieren können :D

Vlt hilft dir auch das: http://www.roseindia.net/java/java-conv ... Date.shtml
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Umwandlung einer Zeitinformation zu java.util.Date

Beitrag von Dirty Oerti » Sa Jun 11, 2011 1:42 pm

Hehe, ich sitze natürlich nicht hier und warte nur auf eine Antwort :D
Das mit den 100 Zeilen bezweifle ich stark, ich spreche auch von Zeitzonen, Sommerzeit ;)

Hab nun aber eine - wie ich finde - elegante Lösung gefunden:

Code: Alles auswählen

    protected Date date;
    public UTCDate(int y, double d)
    {
        Calendar cal = new GregorianCalendar(tz);
        cal.set(Calendar.YEAR, y);
        int day = (int) d;
        d = d - day;
        d = d * 24.;
        int hour = (int) d;
        d = d - hour;
        d = d * 60;
        int min = (int) d;
        d = d - min;
        d = d * 60;
        int sec = (int) d;
        d = d - sec;
        d = d * 1000;
        int msec = (int) d;
        cal.set(Calendar.DAY_OF_YEAR, day); // Das war sozusagen der Knackpunkt, den ich gesucht hatte :) Und gefunden habe :D
        cal.set(Calendar.HOUR_OF_DAY, hour);
        cal.set(Calendar.MINUTE, min);
        cal.set(Calendar.SECOND, sec);
        cal.set(Calendar.MILLISECOND, msec);
        this.date = cal.getTime();
    }
*edit* "tz" im obigen Beispiel ist die Zeitzone, also ein java.util.TimeZone ;)

*edit2* Wofür ich das gebraucht hab: http://www.castor2.ca/03_Mechanics/03_TLE/Epoch.html
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten