Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.01.2016, 13:38
cyber cyber вне форума
Прохожий
 
Регистрация: 03.05.2015
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Как генерировать 13 значный timestamp (у меня получается только 10)

Добрый день форумчане, подскажите как исправить функцию, чтобы timestamp (количество миллисекунд с 1970 года) был не 10-значный, а 13-значный.

Вот функция
Код:
function DateTimeToStamp(DelphiTime : TDateTime): LongWord;
begin
Result := Round((DelphiTime - 25569) * 86400);
end;

Вот ее вызов
Код:
timestamp := inttostr(DateTimeToStamp(Now));

Получаем 1452314092. Нужно получить 1452334536851 (ну такое число встречается везде на сайтах где используется функция php - getTime()).

p.s. нужно результат php функцию getTime() подогнать к дельфи. Как ?

Последний раз редактировалось cyber, 09.01.2016 в 14:39.
Ответить с цитированием
  #2  
Старый 09.01.2016, 14:07
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а секунды и миллисекунды не перепутаны?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 09.01.2016, 14:38
cyber cyber вне форума
Прохожий
 
Регистрация: 03.05.2015
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

прошу прощения, миллисекунды требуются
Ответить с цитированием
  #4  
Старый 09.01.2016, 16:56
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так умножай на 86400000
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
cyber (09.01.2016)
  #5  
Старый 09.01.2016, 17:07
cyber cyber вне форума
Прохожий
 
Регистрация: 03.05.2015
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
так умножай на 86400000
я сам не допер, спасибо тебе добрый человек
Ответить с цитированием
  #6  
Старый 12.01.2016, 23:45
cyber cyber вне форума
Прохожий
 
Регистрация: 03.05.2015
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

сегодня попробовал, не получается то, что нужно. Если умножать на 86400000 то получаем 910901120 вместо 1452334536851
Ответить с цитированием
  #7  
Старый 12.01.2016, 23:53
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Если при умножении на 86400 получал 1452314092, то при умножении еще на тысячу (чем и является умножение на 86400 000) по определению получишь то же самое, но с тремя цифрами на конце. Невозможно получить такой операцией число меньшей длины. Кроме случая с переполнением, конечно, потому что это число (910901120) явно меньше максимума, которое влезает в integer/dword, а 1452334536851 - больше.
Почему так? А потому что:
Цитата:
Тип LongWord - целые числа, имеющие положительные значения до 4294967295. Он занимает 32 бита памяти.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
cyber (13.01.2016)
  #8  
Старый 13.01.2016, 01:53
cyber cyber вне форума
Прохожий
 
Регистрация: 03.05.2015
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Если при умножении на 86400 получал 1452314092, то при умножении еще на тысячу (чем и является умножение на 86400 000) по определению получишь то же самое, но с тремя цифрами на конце. Невозможно получить такой операцией число меньшей длины. Кроме случая с переполнением, конечно, потому что это число (910901120) явно меньше максимума, которое влезает в integer/dword, а 1452334536851 - больше.
Почему так? А потому что:
Спасибо за подсказку, исправил на Int64 и все ок работает

Последний раз редактировалось cyber, 13.01.2016 в 02:17.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:35.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025