Rundungsfehler mit Variant Outlook Datum

heleon

Grünschnabel
Ich lese mit Hilfe von OLE die Termine in meinem Outlookkalender aus, dies funktioniert auch!
Code:
int[] CalendarDurationPropertyDispId = calendarAutomation
            .getIDsOfNames(new String[] { "Duration" });

            Variant calendarDuration = calendarAutomation
            		.getProperty(CalendarDurationPropertyDispId[0]);

    
            System.out.println("Appointment: " + calendarSubject.getString()
            		+" Date Double: " + calendarStart.getDouble()
            		+" Duration: " + calendarDuration.getInt());
Den Wert welche ich zum Beispiel für "9.11.2008 13:00" angezeigt beckomme sieht so aus: 39761.54296875 die Stellen vor dem Komma sind die Tage seit dem 1.1.1900 und die Stellen nach dem Komma ist der Faktor der Zeit eines Tages, somit würde dies 13:01 ergeben, aber in Outlook wird 13:00 angezeigt.

Bei Zeiten wie 12:00 oder 6:00 beckomme ich exakte Werte 0.5 und 0.25!

An was kann es liegen, dass ich bei den anderen Zeiten ungenaue Werte beckomme?
 
Hallo heleon,

leider kann ich Dir keine Lösung liefern da ich genau das selbe Problem habe!

Ich lese mittels SWT Kontakte aus und möchte diese mit anderen synchronisieren. Hierzu lese ich in den Kontakten das Feld "LastmodificationTime" aus!

<---- snip----
int[] PropertyDispId = oleContact.getIDsOfNames(new String[] { FieldName });
Variant tmp;
tmp = oleContact.getProperty(PropertyDispId[0]);
if(tmp.getString().isEmpty()){tmp = null;}
return tmp
---->

Ich bekomme es einfach nicht hin dass ich in Java wirklich das identische Datum erhalte wie in Outlook angezeigt/gespeichert wird.

Ich habe mir in Outlook extra ein kleines Tool gebaut dass mir über VBA "LastmodificationTime" ausliest und anzeigt -> CDbl(contact.LastModificationTime).

Vergleiche ich dieses mit der Zahl die mir SWT/Java zurückliefert habe ich minimale Abweichungen in der Uhrzeit welche aber dazu führen dass meine Synchronisierung nicht merken kann das der Kontakt auch tatsächlich geändert wurde.

Ich habe mir in Java das Feld bereits als Double, Float, BigDecimal und String liefern lassen. Half alles nix. Die Zahl die SWT von Outlook erhält ist einfach nicht die selbe wie tatsächlich in Outlook gespeichert wird, ich denke hier gibs unerklärliche Rundungsdifferenzen oder ich blicke es einfach nicht ;-((((

Gruß
noch ein Verzweifelter ;-)
 
Zurück