Помогите строковое представление времени '15:06:23.456' перевести в TDateTime. StrToTime на миллисекунды почему-то бушует.
И как можно из TDateTime получить количество миллисекунд именно времени, кроме как разбитием DecodeTime(myDate, myHour, myMin, mySec, myMilli); и потом суммой произведений?
LongTimeFormat := 'hh:nn:ss.zzz';
Uses DateUtils;
// ...
var ms: Word;
ms := MillisecondOf(Now);
Неа Я уже так пробовал - не хочет.
Показывай, как пробовал, у меня отработало только что...
Делфи 7 и 2010 пишут на вот это
LongTimeFormat := 'hh:mm:ss.zzz';вот такую кляузу:
DT := StrToTime('11:11:11.111');
Я не сказал 'hh:mm:ss.zzz', я сказал 'hh:nn:ss.zzz'...
mm - это обозначение месяца для данной функции.
Все равно.
Добавлено через 3 мин.
procedure FillPausesTime;
var
DT: TDateTime;
begin
LongTimeFormat := 'hh:nn:ss.zzz';
DT := StrToTime('11:11:11.111');
end;
TimeSeparator проверьте, он должен содержать ':'. Других причин для вылета StrToTime просто не существует.
Добавлено через 3 мин.
А, вот еще что... Проверьте вот такое:
DT := StrToTime('11:11:11,111');
да да, несчастная запятая
Спасибо! До DecimalSeparatorа никогда бы не догадался)
А вот типа такого:
function MS(DT: TDateTime): Longint;Встроенного ничего нет?
begin
result := MillisecondOf(DT) + 1000 * (SecondOf(DT) + 60 * (MinuteOf(DT) + 60 * HourOf(DT)));
end;
Насколько я понимаю, это аналог
function MilliSecondOfTheDay(const AValue: TDateTime): LongWord;
Оно!