Hallo zusammen,
erst mal vielen Dank für die vielen Antworten.
Ich habe mich gestern abend noch ein paar Stündchen im Web vergnügt und mir eine Lösung zusammengebastelt (... ich drücke mich ganz bewußt so aus, weil ich mir absolut keinen Reim darauf machen kann, warum das funktioniert; aber dazu später mehr.)
@RaKA
...Die Frage ist aber doch, ob ich nur den Sommer/Winter-Offset der aktuellen Systemzeit haben möchte oder
--wie in meinem Fall-- eine vorgegebene UTC Zeit (GPS Zeit) in CEST umrechnen möchte. ...
Genau dieses Problem habe ich auch!
...Wie man die Geo-Zeitzone mit StarBasic ausliest kann ich dir nicht sagen. ...

... guckst Du hier:
Zunächst einmal: Über StarBasic und der Ooo API habe ich leider keine passende Funktion gefunden.
Karolus hat aber die blendende Idee

gehabt JavaScript zu verwenden. Da gibt es so eine Funktion! Da JavaScript in Ooo lauffähig ist, wäre dies demnach auch plattformunabhängig

.
Hier der Code:
Code: Alles auswählen
var year = ARGUMENTS[0];
var month = ARGUMENTS[1];
var day = ARGUMENTS[2];
var hours = ARGUMENTS[3];
var minutes = ARGUMENTS[4];
var seconds = ARGUMENTS[5];
var d = new Date( year, month, day, hours, minutes, seconds );
d.getTimezoneOffset() / 60;
Dazu habe ich zunächst im Dokument die Bibliothek "Test" (
Extras -> Makros -> Makros verwalten -> JavaScript...) angelegt und darin das Modul "TimeZoneOffset.js" erstellt. Nun öffnet sich der
Rhino JavaScript Debugger. Darin habe ich den Code eingefügt und über "File -> Save" gespeichert.
Der JavaScript Teil ist damit erledigt. Nun zum Aufruf des JavaScripts aus dem Ooo-Basic Modul. Dazu habe ich folgenden Code erstellt:
Code: Alles auswählen
Option Explicit
Sub callJavaScript()
Dim oDocScriptProvider As Object
Dim oScriptTimeZoneOffset As Object
Dim iTimezoneOffset%
Dim iYYYY%, iM%, iD%, iHH%, iMM%, iSS%
REM Testdaten
iYYYY = 2009
iM = 09
iD = 25
iHH = 03
iMM = 00
iSS = 00
'Use this, if you install the JavaScript locally in the current doc
oDocScriptProvider = ThisComponent.getScriptProvider()
oScriptTimeZoneOffset = oDocScriptProvider.getScript( _
"vnd.sun.star.script:Test.TimeZoneOffset.js?language=JavaScript&location=document")
iTimezoneOffset = oScriptTimeZoneOffset.invoke( Array( iYYYY, iM, iD, iHH, iMM, iSS ), Array(), Array() )
MsgBox( "Der TimeZoneOffset beträgt: " & iTimezoneOffset )
End Sub
Das Testdatum habe ich mir aus einzelnen Variablen zusammengebaut, da dies zu Testzwecken im Handling einfacher ist.
Wenn man ein Datum innerhalb der MEZ übergibt, erhält man in der MessageBox -1. Bei einem Datum innerhalb der MESZ erhält man -2. Das Vorzeichen ist insofern praktisch, weil man so mit DateAdd() die UTC direkt ausrechnen lassen kann

.
Ziemlich suspekt ist mir jedoch die Sache mit dem Aufruf des JavaScripts!
Wieso kann man bei invoke() den Funktionsnamen der aufzurufenden Funktion einfach weglassen? In der API ist dieser nicht als optional deklariert (siehe:
http://api.openoffice.org/docs/common/r ... tml#invoke.
Die Übergabe der anderen Parameter ist mir einigermaßen verständlich (... mit aOutParamIndex und aOutParam kann ich momentan auch leider nichts anfangen!), aber weshalb wird der Rückgabewert aus dem JavaScript korrekt übergeben, obwohl ich ihn nirgends "bewußt" zugewiesen habe
Wenn mir da jemand weiterhelfen kann, wäre ich sehr dankbar.
P.S.
@hawkhunter2002
... auf diese Seite bin ich gestern abned auch noch gestoßen. Aber wirklich verstanden habe ich das nicht. Irgendwie vermisse ich ein vernünftiges Tutorial zum einbinden von Scripten in Ooo.
Greetz,
Billy