Anzahl Tage in Datum umwandeln

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich hab folgendes Problem. Ich hab eine Excel-Liste, die ich in ein XML-Datei exportiere um die XML-Datei dann über Java einzulesen um die Daten verarbeiten zu können.

Das Problem ist, eine eine Spalte in der Excel-Liste als Datum formatiert ist. Das hat zur folge, dass das Datum nicht normal (also z.b. für heute 08.05.2007) steht sondern als Zahl (z.b. für heute 39210). Ich bin der Meinung, dass das die Anzahl der vergangenen Tage vom 1.1.1900 bis heute sind. Deswegen habe ich folgendes gemacht um das Datum erst in millisekunden und dann in ein richtiges Datum umzuwandeln

Code:
long i = 39210 * 24 * 60 *60 * 1000;
Date d = new Date(i);
System.out.println(d);

Leider führt das nicht zum heutigen Datum sondern irgendwann in die Zukunft. Wollte zwar schon immer mal in die Zukunft reisen, aber nicht gerade jetzt. :lol:

Hat jemand eine Idee, wie ich es umwandeln kann so dass ich wieder in der Gegenwart bin? Oder weiß jemand, ob die Zahl wirklich die Anzahl der vergangen Tage ist, vielleicht rechnet Excel das ja auch anders um?

Vielen Dank
 
S

SlaterB

Gast
das habe ich auch vor kurzem kennengelernt ;)
Tag 0 ist glaube ich irgendwas von 1950,

kannst dir ja selber genau ausrechen, wichtig ist erstmal nur ein Richtwert,
Excel-Tag x = Date y

Code:
    /**
     * beliebiger Richtwert zur Umrechnung von Java-Date nach Excel-Date als double, beide
     * Werte müssen zusammenpassen
     */
    private static final Date EXCEL_CONVERSION_DATE;
    private static final double EXCEL_CONVERSION_DATE_DOUBLE = 38989;

    static
    {
        Calendar c = new GregorianCalendar(2006, 8, 29);
        EXCEL_CONVERSION_DATE = c.getTime();
    }

bisschen weiterrechnen darfst zu selber ;)
 
S

SlaterB

Gast
?? hier gehts doch nicht um Java..

aber 1950 stimmt auch nicht, 1900 schon eher

38989 / 365 ~ 107
 

HoaX

Top Contributor
beim javadatum fangen die millisekunden aber erst am 1.1.1970 an, daher ist dein datum dann etwas in der zukunft.

vorschlag:
Code:
Calendar cal = Calender.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calender.MONTH, 0);
cal.set(Calendar.YEAR, 1900);
cal.add(Calendar.DAY, deineExcelTage);
Date d = cal.getTime();

calendar-konstanten evtl korrigieren. mit dem calendar werden dann auch schaltjahre berücksichtigt.
 

sgr

Mitglied
oh mann, warum ich als Gast geschrieben hab tät ich auch mal gerne wissen. Hatte mich doch extra eingeloggt. ???:L

SlaterB hat gesagt.:
?? hier gehts doch nicht um Java..

aber 1950 stimmt auch nicht, 1900 schon eher

38989 / 365 ~ 107

Natürlich gehts hier um Java will ja wissen wie ichs am Besten in Java umrechne. Leider gehts halt in dem Moment net ohne die Schnittstelle Excel


HoaX hat gesagt.:
beim javadatum fangen die millisekunden aber erst am 1.1.1970 an, daher ist dein datum dann etwas in der zukunft.
Ups, dachte die beginnen auch am 1.1.1900. Gut zu wissen. Das kann natürlich der Grund dafür sein, dass es nicht so geht. Morgen früh gleich mal deine Lösung probieren.
 

The_S

Top Contributor
Warum nicht einfach

Code:
GregorianCalendar cal = new GregorianCalendar(1900, 0, 1);
cal.add(Calendar.DATE, days);
 

sgr

Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
Warum nicht einfach

Code:
GregorianCalendar cal = new GregorianCalendar(1900, 0, 1);
cal.add(Calendar.DATE, days);

Danke funktioniert "fast" perfekt. Hab noch folgendes Problem. Das Datum unterscheidet sich immer um 2 Tage. Das heißt, wenn ich in Excel z.b den 9.5.2007 eingebe bekomme ich als Referenzzahl die 39211. Rechne ich diese jetzt in Java um bekomme ich den 11.5.2007 raus.

Hat jemand ne Ahnung woran das liegen kann. Oder weiß jemand, ob das immer so ist, denn dann könnte ich ja einfach -2 machen.
 

sgr

Mitglied
Ok hab die 2 verloren Tage gefunden.

1. Tag:
Bei Excel steht die 1 für den 1.1.1900 und nicht die 0


2. Tag:
In java ist dass Jahr 1900 kein Schaltjahr. In Excel gibt es allerdings den 29.2.1900. So verschiebt sich nochmals das Datum immer um 1.

Das bedeutet, dass das immer so ist und ich einfach -1 schreiben kann. Also mach ich es jetzt so:

Code:
cal = new GregorianCalenda(1900, 0 , -1)  //-1 da Excel bei 0.0.1900 anfaengt zu zaehlen, und im Jahr 1900 ein Zaehlfehler ist
cal.add(Calendar.DATE, days);

So geh ich zwar das Risiko ein, dass ein Datum kleiner als der 01.03.1900 falsch berechnet wird. Aber das wird bei mir eh nicht vorkommen, da das Datum eh nur in der Zukunft liegt. Also egal.

Somit ist mein Problem gelöst. :applaus: (Leider kann ich keinen hacken ran machen)
 

The_S

Top Contributor
Ich würde mal sagen, dass ist ein Excel-Fehler, da das Jahr 1900 definitiv kein Schaltjahr ist (zwar glatt durch 4 teilbar, aber ebenfalls glatt durch 100, jedoch nicht durch 400)!
 
S

SlaterB

Gast
wenn du das schon zitierst, dann fehlt doch der Hinweis
Haken != Hacken != Harken ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Anzahl der Tage eines Monats Allgemeine Java-Themen 3
T Anzahl Tage zwischen zwei Daten - Stunde fehlt? Allgemeine Java-Themen 2
L Anzahl Tage zwischen zwei Kalenderdaten Allgemeine Java-Themen 5
BeginnerJava Anzahl der 5 % - Zuwächse ausgeben Allgemeine Java-Themen 6
M Wie übergebe ich den Zähler für die Anzahl Rekursionsschritte korrekt? Allgemeine Java-Themen 2
S BlockingQueue mit dynamischer Anpassung der Anzahl von Producer und Consumer Threads Allgemeine Java-Themen 1
S Iterable<?> anzahl der Element Allgemeine Java-Themen 14
M Java- Bild gewissen Anzahl von Sekunden anzeigen?! Allgemeine Java-Themen 4
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
M Relative Anzahl an verschachtelten Forschleifen Allgemeine Java-Themen 8
The Pi Anzahl der Gewichtscheiben berechnen Allgemeine Java-Themen 11
P Threads Parallelisierte DB-Abfragen mit variabler Anzahl an Threads Allgemeine Java-Themen 4
Soloeco BubbleSort Anzahl der Vertauschungen Allgemeine Java-Themen 9
J Anzahl geöffneter Plugins Allgemeine Java-Themen 3
A Anzahl an Threads Systemweit Allgemeine Java-Themen 2
J Anzahl von Möglichkeiten zur Verteilung von Kugeln in Behälter Allgemeine Java-Themen 3
P Erste Schritte Dynamische Anzahl von verschachtelten Schleifen Allgemeine Java-Themen 5
E ArrayList Anzahl der gleichen Elemente Allgemeine Java-Themen 4
R Int werte vergleichen und Anzahl Paare ausgeben Allgemeine Java-Themen 4
L Ermitteln der Anzahl an Lösungen von quatratischen Gleichungen (Sieb von Atkin) Allgemeine Java-Themen 1
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
J Anzahl der Zeichen bei Eingabe begrenzen Allgemeine Java-Themen 5
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
P Anzahl vo Einträgen in verschiedenen Sets Allgemeine Java-Themen 3
R Anzahl der gerade gedrückten Tasten Allgemeine Java-Themen 6
J ermitteln der Anzahl der Monate Allgemeine Java-Themen 7
M Anzahl der Durchläufe einer Funktion errechnen Allgemeine Java-Themen 6
G Anzahl Primzahlen im Intervall Allgemeine Java-Themen 3
X Textdatei auf gewünschte Anzahl der Zeilen kürzen Allgemeine Java-Themen 2
M Anzahl Farbwerte (RGB) im Array speichern - Problem Allgemeine Java-Themen 13
N variable Anzahl von Objektinstanzen zur Laufzeit erstellen Allgemeine Java-Themen 4
D unbekannte Anzahl checkboxes Allgemeine Java-Themen 2
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
Iron Monkey Anzahl der Monate ermitteln Allgemeine Java-Themen 17
neonfly Anzahl Zeichen pro Zeile auf der Konsole Allgemeine Java-Themen 8
R ArrayList -- Maximale Anzahl an Elementen Allgemeine Java-Themen 2
O Große Anzahl Bilder laden Allgemeine Java-Themen 7
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
V Java-Objekt. wie groß maximal ? anzahl der einträge Allgemeine Java-Themen 4
M Aus Anzahl Tagen Datum ermitteln Allgemeine Java-Themen 8
M JTable: Anzahl Zeichen bei Eingabe Allgemeine Java-Themen 2
S Anzahl der Stunden in Excel Datei schreiben Allgemeine Java-Themen 2
G Anzahl an Tagen auf Datum addieren Allgemeine Java-Themen 4
MQue Anzahl der Ziffern Allgemeine Java-Themen 13
MQue Anzahl der Kommastellen Allgemeine Java-Themen 6
F Anzahl der nachkommastellen bestimmen nur wie? Allgemeine Java-Themen 10
M Aktualisieren eines Chatprofils (Anzahl Minuten) Allgemeine Java-Themen 4
G Variable Anzahl JTextfleder Allgemeine Java-Themen 3
S Bandbreite/Anzahl Pakete messen Allgemeine Java-Themen 3
V String formatiert ausgeben ( gleiche Anzahl von Ziffern ) Allgemeine Java-Themen 5
padde479 Anzahl Methodenaufrufe Allgemeine Java-Themen 7
J Matrix mit unterschiedlicher Anzahl von Spalten pro Zeile? Allgemeine Java-Themen 4
F Datum mit anzahl tagen berechnen Allgemeine Java-Themen 3
W PrepareStatement und Anzahl der Datensätze Allgemeine Java-Themen 2
rambozola anzahl zeichen in konsole eclipse begrenzt? Allgemeine Java-Themen 5
G anzahl "verwendeter" elemente eines arrays ermitte Allgemeine Java-Themen 2
M Anzahl der Threads pro Programm? Allgemeine Java-Themen 3
R java.lang.String maximale Anzahl der Zeichen Allgemeine Java-Themen 7
V Anzahl der Zeilen in einem File Allgemeine Java-Themen 3
K anzahl laufender Threads Allgemeine Java-Themen 3
G Datum letzte 7 tage Allgemeine Java-Themen 6
L Methoden Dateien älter als 30 Tage? Allgemeine Java-Themen 11
P [Joda Time] Jahr, Tage, Stunden... vergangen seit Zeitpunkt Allgemeine Java-Themen 9
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
M GregorianCalender Tage dazuzählen Allgemeine Java-Themen 2
J Alle Tage eines Jahres Allgemeine Java-Themen 2
G Log4J - Logs älter als 3 Tage löschen Allgemeine Java-Themen 5
P Dauer (Tage, Stunden, Minuten, Sekunden) berechnen Allgemeine Java-Themen 5
2 Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 2
G Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 3
H Differenz Tage errechnen Allgemeine Java-Themen 2
O aktuelle Tage bis zum jahresende ermitteln Allgemeine Java-Themen 3
G Zum Datum 30 Tage oder 1 Monat hinzufügen Allgemeine Java-Themen 10
R Date Tage abziehen Allgemeine Java-Themen 3
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
W Datum anzeigen Allgemeine Java-Themen 10
MiMa Datum von zweistelliger Jahreszahl auf 4 Stellen aufrüsten? Allgemeine Java-Themen 4
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
MiMa Wie sollte am besten ein Datum gespeichert werden? Allgemeine Java-Themen 8
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Hatsi09 Heutiges Datum Allgemeine Java-Themen 3
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
MiMa Das Datum Format ist mir unbekannt. Allgemeine Java-Themen 1
A Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen 7
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
M Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 4
E Datei anhand Datum identifizieren Allgemeine Java-Themen 3
Dechasa Java 8 - Datum vergleichen Allgemeine Java-Themen 5
M Datum umwandeln. Allgemeine Java-Themen 1
P Datum im gewünschten Bereich Allgemeine Java-Themen 21
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
M datei aufruf datum auslesen Allgemeine Java-Themen 5
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben