|
Тема
|
DataTime - дайте идея...
|
|
Автор |
PhantomAS () |
Публикувано | 24.05.06 22:25 |
|
Едно въпросче за раздвижване на сивото вещество, че явно аз тотално съм забил.
Та въпроса е следния - ICQ и history-файловете - ако сте ги разглеждали -там има нещо подобно
<event>
<type>0</type>
<incoming>Yes</incoming>
<time>1144585987</time> <------- ТЕ за това става дума
<text>това трябва да е текста на съобщението.
</text>
</event>
До колкото знам DataTime-a е реално число (Double) - ама тук явно е конвертирано или кодирано по някав начин - не е само дата - ами и часа е кодиран :(
Дайте идеи - просто се базикам искам да си прекарам history-to в по нормален вид.
P.S.
сори за днешната среща ако я е имало - но бях out. Следващия път ще съм на линия.
---
| |
Тема
|
Re: DataTime - дайте идея...
[re: PhantomAS]
|
|
Автор |
NikB (любопитен) |
Публикувано | 24.05.06 22:42 |
|
Прилича ми на секунди след някоя дата (за Юникс например, след 1.1.1970)
1148415667 е някъде около вчера (23-ти) след обяд или вечерта.
Твоето е с около 4 000 000 секунди по-малко (май е от преди около 40 дни), но това - ако базата е същата.
| |
|
xDtTm_1_1_1970 е 25569 (по оня начин, който описваш)
значи може да пробваш - това трябва да е преобразуването:
25569+(новото ти число)/24/60/60
25569+(1144585987)/24/60/60
И като напишеш нещо ценно, да го споделиш :)
| |
|
10x - ще пробвам - това за UNIX-a не ми беше хрумвало - язък, че последните месеци тренирах пускане и чоплене в скриптове някои от тях имаха параметри дати.
---
| |
|
Не съм го писал аз - но пък ти ми помогна да го намеря бързо...
function UNIXTimeToDateTime(UNIXTime: LongWord): TDateTime;
var
TimeZoneInformation: TTimeZoneInformation;
begin
GetTimeZoneInformation(TimeZoneInformation);
Result := StrToDate('01/01/1970') + (UNIXTime/(24*3600)) - ((TimeZoneInformation.Bias + TimeZoneInformation.DaylightBias) / (24 * 60));
end;
function DateTimeToUNIXTime(DelphiTime : TDateTime): LongWord;
var
MyTimeZoneInformation: TTimeZoneInformation;
begin
GetTimeZoneInformation(MyTimeZoneInformation);
Result := round(DelphiTime - StrToDate('01/01/1970') + ((MyTimeZoneInformation.Bias) / (24 * 60))) * (24 * 3600);
end;
---
| |
Тема
|
Няма да повярваш, но точно преди 48 часа
[re: PhantomAS]
|
|
Автор |
NikB (любопитен) |
Публикувано | 25.05.06 00:38 |
|
Няма да повярваш, но точно преди 48 часа си мислех, че когато имам време ще се занимая с часовите зони на това преобразуване. Оная вечер направо извадих 3 часа от времето на сървъра и работата заспа.
Та и аз да ти благодаря, че ми спести ровене из DateTime функциите!
Все пак, когато ползваш тия времена, трябва да си сигурен, че са по гринуич.
| |
|
|
|
|