"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP: Konvertieren: Unix Time to File Time

DJ_Cyberdance 15.01.2006 - 13:04 1560 2
Posts

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Ich müßte einen Unix-Timestamp mittels PHP ins M$ FileTime Format konvertieren. M$ sagt freundlicherweise wies geht:

http://support.microsoft.com/defaul...B;en-us;q167296

Aber das ist leider für C++, nicht für PHP... hat jemand eine Idee, wie ich das in PHP bewerkstelligen könnte? Ich brauch keinen 64bit-Wert, 2x32bit (die dort erwähnten dwLowDateTime und dwHighDateTime) würden mir reichen, auch ein String wär ok... Hat jemand eine Idee?

samuel

.:: unnahbar ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
ich stand neulich bei einer mobilen anwendung fuer den nokia 9500 communicator vor einem vergleichbaren problem.

in der J2ME gibt es eine abstracte klasse Calendar welche felder enthaelt, die man durch die uebergabe der unix system time berechnen kann. moeglicherweise findest du nach etwas suchen fuer php vergleichbare funktionen/methoden/klassen/whatever...

hth
sam

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
das problem ist nicht die umrechung (unixtime hat eine auflösung von 1 sec und startet 1.1.1970) (win32 filetime hat eine auflösung von 100 nsec und startet 1.1.1601): die ist mit einem offset und einer linearen skalierung bewerkstelligt:
win32filetime=unixtime*10000000+116444736000000000;

das problem ist, daß php überlicherweise nur 32 bit integer unterstützt, und daher diese rechnung gar nicht durchführen kann.

du könntest dich natürlich mit einem näherungswert zufrieden geben, und als fließkomma berechnen, und hinterher in ein hi-integer und low-integer konvertieren - was allerdings auch nicht so unproblematisch ist, weil php nur signed integers kann. wenn ein string reicht, kann man das float immer noch in einen string umwandeln.

andere möglichkeit einer exakten lösung ist das verwenden einer library für beliebig lange ganzzahlen, wie der gmp - oder das ausprogrammieren von addition und multiplikation auf zeichenketten.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz