unix timestamp erstellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

ush189
*
Beiträge: 12
Registriert: Mi, 12.09.2007 14:48

unix timestamp erstellen

Beitrag von ush189 »

Wie kann ich in OOo Basic einen unix timestamp erstellen? Die Funktionen now() oder date() liefern das Datum ja eher im Klartext.
Gibts vielleicht ne Funktion die das umrechnet? Oder muss ich mir die selbst schreiben?
ush189
*
Beiträge: 12
Registriert: Mi, 12.09.2007 14:48

Re: unix timestamp erstellen

Beitrag von ush189 »

Ich habs jetzt mal so gemacht:

Code: Alles auswählen

Function Timestamp() As Long
	Timestamp = DateDiff("s", "1.1.1970 0:00:00", Now())
End Function
Scheint zu klappen. Aber gibts da trotzdem vielleicht was "offizielles"?
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: unix timestamp erstellen

Beitrag von Toxitom »

Hey ush189,
..Die Funktionen now() oder date() liefern das Datum ja eher im Klartext.
Nein. Das kommt darauf an, was du damit machtst. Zumindest now() liefert exakt die interen Datums/Zeitzahl.

Probiere es aus:

Code: Alles auswählen

Sub ZeitDatumAuslesen
	dim d as date
	dim n as double
	d = now()
	n = now()
	msgbox d & chr(13) & n
End Sub
Nur: eine Date-Variabel wird bei Ausgaben (Print, msgbox oder so) in einen lesbaren String verwandelt. Intern bleibt es aber eine Zahl.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ush189
*
Beiträge: 12
Registriert: Mi, 12.09.2007 14:48

Re: unix timestamp erstellen

Beitrag von ush189 »

Hi Thomas,

ich hab deine Funktion mal ausprobiert. Aber die liefert mir für n einen Wert von circa 39.350.
Keine Ahnung was das darstellen soll. Von der Größenordnung wäre es am ehesten die Anzahl der Tage. Aber das passt auch nicht.
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: unix timestamp erstellen

Beitrag von Toxitom »

Hey Ush189,
Von der Größenordnung wäre es am ehesten die Anzahl der Tage. Aber das passt auch nicht.
Doch, genau das ist es. So wie alle Ofice-Programme wird die interen Zeit/Datum als fortlaufende Zahl der Tage (vor dem Komma) gezählt - und zwar je nach System üblicherweise mit Startpunkt 30.12.1899. Die nachkommastellen hingegen weisen die aktuelle Zeit auf, und zwar in der Form, dass 24 Stunden genau 1 ergeben, also 12 Stunden 0,5 und so weiter. Auf dieser Basis wierd alles berechnet, d.h. OOo verwendet genau diese Zahl intern als Datumsvariabel (wie in Calc, aber auch in Excel oder so).
n zeigt dir genau diesen "Timestamp" - als interen zahl. d hingegen die formatierte Ausgabe als String.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: unix timestamp erstellen

Beitrag von komma4 »

ush189 hat geschrieben:Aber gibts da trotzdem vielleicht was "offizielles"?
ist das "inoffiziell"?
Im Ernst: nein, es gibt keine Basic-Funktion, die dir das Ergebnis direkt liefert.

Dir ist klar, dass das Unix timestamp keine Rücksicht auf Schaltsekunden nimmt, eine an OOo anschlossene Atomuhr mit der NOW-Funktion aber schon.....
Sollte vernachlässigbar sein :-)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten