За последние 24 часа нас посетил 17001 программист и 1652 робота. Сейчас ищут 966 программистов ...

FILETIME to unixtime

Тема в разделе "PHP для новичков", создана пользователем Юрий Алексеевич, 28 июл 2009.

  1. Юрий Алексеевич

    Юрий Алексеевич Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    8
    Симпатии:
    0
    Здравствуйте!
    Стоит задача преобразовать WinApi FILETIME в unixtime.

    поступаю следующим образом:

    Код (Text):
    1. $time = fread($f, 8);
    2.        
    3.         $unixtime = bin2hex($time);
    4.         $unixtime = base_convert($unixtime, 16, 10);
    5.        
    6.                
    7.         $iunixtime = (float)$unixtime;
    8.         $iunixtime = $iunixtime/1000000;
    9.         $iunixtime = $iunixtime - 11644473600;
    10.        
    11.         $iunixtime = (int)$iunixtime;
    Если честно, то на выходе получается фигня. Подскажите, где же я ошибаюсь.
    Заранее спасибо!
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А не легче воспользоваться наряду с остальными финкциями WinAPI, например, FileTimeToSystemTime ?
    Например, именно в таком формате записать файл, а уже на сервере его отформатировать в аналог unix timestamp?
     
  3. Юрий Алексеевич

    Юрий Алексеевич Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    8
    Симпатии:
    0
    Это парсер JTV, т.е. автоматом будут подсовываться файлы, дополнительное звено с виндовой машиной явно ни к чему =)
     
  4. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
  5. Юрий Алексеевич

    Юрий Алексеевич Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    8
    Симпатии:
    0
    Действительно забыл, что кроме ru, есть и другие зоны =)
    Ошибка заключалась в том, что забыл flip`нуть старшее-младшие слова в 64-й структуре.