kiltum (kiltum) wrote,
kiltum
kiltum

Ай нид хелп.

Ниччего не понимаю © Шеф из колобков.

Гуры, а может, я уже того? Все мануалы один-в-один твердят, что в палме время хранится в секундах с 1 января 1904 года. С 00:00.

Что в Treo600, что в 650 стоят arm процессоры. От intel. Ок, давайте играть. Пишем кусок кода.

buf - это обычный char[]. start - указатель на место, с которым работаем.

Наткнувшись на запись о времени, я рисую вот такой код:

time_t rawtime;
struct tm * ti;
// преобразуем 4 байта в одно большое и хорошее 32х битное значение
rawtime=(buf[start]*0x100+buf[start+1])*(0x10000)+(buf[start+2]*0x100+buf[start+3]);
// отнимаем 66 лет (1970-1904) в секундах
rawtime=rawtime-2082843000;
ti=localtime(&rawtime);

и вывожу из ti куда надо. И нихрена не понимаю.

BE98EA50 "30.04.05 12:24" "30.04.05 08:57" - разница 3,5 часа
BEA123CC "06.05.05 18:08" "06.05.05 16:02" - разница 2 часа
BEA3B776 "08.05.05 17:02" "08.05.05 12:33" - разница 4,5 часа

Слева 4е оригинальных байта (как идут в потоке), потом дата которая получилась. Справа - около которой должно получиться (плюс минус десяток секунд).

Поражает разброс. Может, у кого возникнет мысля?

P.S. Попытался связаться с автором аналогичной утилиты для treo 600, тот дал кусок кода на VB - но оказалось, что чувак решил не осложнять себе жизнь и просто выводит день, когда получена sms. Грубо говоря берет число секунд и делит на 86400. В день попадает :-)
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 23 comments