Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 693594.86520000 is not valid timestamp

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Mishko78

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите плиз, возникает ошибка при преобразовании ниже , когда время 23.57 или 23.59 или 23.57. Когда время 23.09, например, все хорошо.  
 

Код:
 
var
T: TTimeStamp;
...
  Time1:=strtodatetime('08.10.2015 23:59');
  //Time1:=strtotime('23:09');
  T := DateTimeToTimeStamp(Time1);
 // T := DateTimeToTimeStamp(Time);
  inc(T.Time, Timer.Interval);
  fNextTime      := TimeStampToDateTime(T);
  Timer.Enabled := True;  // Включить таймер
 

 
Timer.Interval равен 3 мин, получается переход через сутки

Всего записей: 14 | Зарегистр. 18-09-2015 | Отправлено: 10:31 08-10-2015 | Исправлено: Mishko78, 10:35 08-10-2015
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ctrl клик на функции пытается открыть в редакторе исходник с ней...
 
Смотрим TimeStampToDateTime:

Код:
 
function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
var
  Temp: Int64;
begin
  ValidateTimeStamp(TimeStamp);
...
 

Первое, что она делает, проверяет корректность.
Смотрим ValidateTimeStamp:

Код:
 
procedure ValidateTimeStamp(const TimeStamp: TTimeStamp);
begin
  if (TimeStamp.Time < 0) or (TimeStamp.Date <= 0) or
     (TimeStamp.Time >= IMSecsPerDay) then
    ConvertErrorFmt(@SInvalidTimeStamp, [TimeStamp.Date, TimeStamp.Time]);
end;
 

Попытка задать в Time количество милисекунд больше, чем бывает в сутках, вызовет ConvertError, что вы и наблюдаете
 
Если пляски с конвертацией в TimeStamp и обратно были только ради сдвига на 3 минуты,
то TDateTime - это дробное число. Сутки - единица. Час - 1/24
 
Time1 := Time1 + 3/24/60; // Увеличит Time1 на 3 минуты.  

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 13:18 08-10-2015 | Исправлено: KDPoid, 13:18 08-10-2015
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А все от того что надо использовать нормальные функции по работе с датой...

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 17:56 13-10-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 693594.86520000 is not valid timestamp


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru