Помощь - Поиск - Пользователи - Календарь
Полная версия: TDateTime
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
sheka
Помогите строковое представление времени '15:06:23.456' перевести в TDateTime. StrToTime на миллисекунды почему-то бушует.

И как можно из TDateTime получить количество миллисекунд именно времени, кроме как разбитием DecodeTime(myDate, myHour, myMin, mySec, myMilli); и потом суммой произведений?
volvo
Цитата
StrToTime на миллисекунды почему-то бушует.
StrToTime использует формат, заданный в LongTimeFormat...

Выстави перед преобразованием
LongTimeFormat := 'hh:nn:ss.zzz';

, не будет бушевать.

Цитата
И как можно из TDateTime получить количество миллисекунд именно времени

Uses DateUtils;
// ...
var ms: Word;
ms := MillisecondOf(Now);
sheka
Неа smile.gif Я уже так пробовал - не хочет.
volvo
Показывай, как пробовал, у меня отработало только что...
sheka
Делфи 7 и 2010 пишут на вот это
  LongTimeFormat := 'hh:mm:ss.zzz';
DT := StrToTime('11:11:11.111');
вот такую кляузу:Нажмите для просмотра прикрепленного файла
volvo
Я не сказал 'hh:mm:ss.zzz', я сказал 'hh:nn:ss.zzz'...

mm - это обозначение месяца для данной функции.
sheka
Все равно.

Добавлено через 3 мин.
procedure FillPausesTime;
var
DT: TDateTime;
begin
LongTimeFormat := 'hh:nn:ss.zzz';
DT := StrToTime('11:11:11.111');
end;
volvo
Очень интересно...

Client
у меня тоже ошибка wacko.gif
volvo
blink.gif TimeSeparator проверьте, он должен содержать ':'. Других причин для вылета StrToTime просто не существует.

Добавлено через 3 мин.
А, вот еще что... Проверьте вот такое:
 DT := StrToTime('11:11:11,111');

, в русскоязычных системах DecimalSeparator - запятая, так и используйте запятую в строке со временем. Или меняйте не только LongTimeFormat, но и DecimalSeparator...
Client
да да, несчастная запятая
good.gif
sheka
Спасибо! До DecimalSeparatorа никогда бы не догадался)

А вот типа такого:
function MS(DT: TDateTime): Longint;
begin
result := MillisecondOf(DT) + 1000 * (SecondOf(DT) + 60 * (MinuteOf(DT) + 60 * HourOf(DT)));
end;
Встроенного ничего нет? smile.gif
volvo
Насколько я понимаю, это аналог
function MilliSecondOfTheDay(const AValue: TDateTime): LongWord;

- функция возвращает количество миллисекунд от начала дня (полуночи) до времени, хранящегося в AValue...
sheka
Оно!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.