ich habe schon eige Zeit im Netz danach gegooglet, habe aber nichts passendes gefunden:
Problemstellung:
Ich habe einen Datumswert, welcher mir die aktuellen Tage vom Ausgangsdatum 01.01.1990 anzeigt.
Also 41131 = 10.08.2012.
Wie kann ich es jetzt realisieren, das ich ein Anfangsdatum 01.01.1990 einstelle und die Tage (zB 41131) hinzuzähle und dann das aktuelle Datum erhalte.
Für was wird es benötigt:
Es wird unregelmäßig eine Datei von einem Gerät erzeugt, welche das Datum in diesem Fortmat ablegt:
41131.000000000.
Dabei ist der erste block das Datum und der zweite Block die Uhrzeit. Das mit der Uhrzeit habe ich bereits gelöst. Jetzt brauche ich noch das Datum, und die Werte in eine Datenbank einzutragen.
finalCalendar c =Calendar.getInstance();// set 01.01.1990
c.setTimeInMillis(Long.MIN_VALUE);// add tage
c.add(Calendar.DAY_OF_YEAR,41131);System.out.println(c.getTime());
str1 = uwdatumzeit.substring(0,5);
tf_test.setText(str1);
strwert =Integer.parseInt(str1);Calendar cal =GregorianCalendar.getInstance();
cal.setTime(newDate(0,0,0,0,0,0));
cal.add(Calendar.DAY_OF_MONTH, datumwert);SimpleDateFormat datumformat =newSimpleDateFormat("dd.MM.yyyy");
datum = datumformat.format( cal.getTime());
tf_test.setText(datum);
Habe noch folgendes Problem.
Da der Datumswert nicht konstant ist, sondern sich stetig ändert, kann ich in Zeile 6 keinen festen Wert eingeben, was richtig funktioniert, sondern habe eine INT Variable datumwert eingefügt.
Eine Fehlermeldung kommt nicht, es wird aber auch der Wert von datumwert nicht hinzugezählt. Als Ergebnis bekomme ich dann den 01.01.1900. Ja, ich habe überprüft, das datumwert = 41131 ist .
Dann schau dir mal die Uhrzeit von diesem 1.1.1900 an... die dürfte so bei "0h00m41s131" liegen. Da wo du datumswert übergibst wird ein long erwartet, welches Zeit und Datum in Millisekunden beinhaltet.
Andererseits... was'n Quatsch ... es gibt keinen 41131. Tag in irgend einem Monat. Der Calender "überschlägt" sich anscheinend.
Dann schau dir mal die Uhrzeit von diesem 1.1.1900 an... die dürfte so bei "0h00m41s131" liegen. Da wo du datumswert übergibst wird ein long erwartet, welches Zeit und Datum in Millisekunden beinhaltet.
Andererseits... was'n Quatsch... es gibt keinen 41131. Tag in irgend einem Monat.
kann nicht sein, mit long bekomme ich folgende Fehlermeldung:
umwelt.java:303:10: error: method add in class Calendar cannot be applied to given types;
cal.add(Calendar.DAY_OF_MONTH, datumwert);
^
required: int,int
found: int,long
reason: actual argument long cannot be converted to int by method invocation conversion
1 error
Setzt ich statt der Variable 41131 ein ist das angezeigte Datum OK.