Столкнулся тут с проблемой перевода времени из виндовой структуры FILETIME соответственно в unixtime. Достаточно длительное время потратил на решение данной задачи, так что выложу решении, вдруг кому понадобится. (Может даже мне, если в будущем подзабуду решение)
Код:
//$time -Время в бинарном виде. В частности у меня читается из фала
$unixtime = bin2hex($time); //Конвертируем в 16
$unixtime = flip_endian($unixtime); //Меняем местами страшее и младшее слова
$unixtime = base_convert($unixtime, 16, 10); //Приводим к 10-у виду
$unixtime = win64_to_unix($unixtime) //преобразовываем в нужное время
function win64_to_unix($bci) {
$magicnum = '116444735995904000'; //Разница между виндовым 1601 и юнихсовым 1970
$t = bcsub($bci, $magicnum); // Cast to Unix epoch
$t = bcdiv($t, '10000000', 0); // Convert from ticks to seconds
return $t;
}
function flip_endian($str) {
if ( strlen($str) & 1 )
$str = '0' . $str;
$t = '';
for ($i = strlen($str)-2; $i >= 0; $i-=2)
$t .= substr($str, $i, 2);
return $t;
}