|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как обработать такое время с точностью до миллесекунд
Как обработать дату вида: 2013-05-13 10:04:48.415 PM
Использую следующий код: 1: DateSeparator:='-'; 2: ShortDateFormat:='yyyy-mm-dd hh:mm:ss.zzz AM/PM'; 3: Date:=StrToDateTime(2013-05-13 10:04:48.415 PM); 4: Memo1.Lines.Add(DateTimeToStr(Date)); 5: Memo1.Lines.Add(FloatToStr(Date)); В Мемо получаю следующий результат: 2013-05-13 10:04:48.000 AM 10:04:48 41407,42 Если в 3-ей строке написать Date:=StrToDateTime(2013-05-13 10:04:48 PM); т.е. убрать миллесекунды, то результат следующий: 2013-05-13 10:04:48.000 PM 22:04:48 41407,92 Время вывелось правильно, но без миллисекунд. В чем причина? Это первая часть вопроса. StrToDateTime как я понимаю оперирует числами Double, что не позволяет обрабатывать их с точностью до миллисекунд. Как обработать данного вида дату с точностью до миллисекунд?? |
#2
|
|||
|
|||
Вместо
Код:
Memo1.Lines.Add(DateTimeToStr(Date)); Код:
Memo1.Lines.Add(FormatDateTime('YYYY-MM-DD HH:NN:SS.ZZZ',Date)); И справка по FormatDateTime |
#3
|
|||
|
|||
Спасибо за подсказку, но это бы тоже не стало работать. И хлеп я тоже активно юзаю)
Тот код который написан у меня полностью аналогичен той строке что и у тебя. Проблема бы в следующем в настройках винды у меня как РАЗДЕЛИТЕЛЬ стояла ЗАПЯТАЯ. Соответственно, не задав разделитель delphi использовал настройки винды и обрабатывая дату использовал РАЗДЕЛИТЕЛЬ запятую! Т.е решения было два поставить в настройках винды РАЗДЕЛИТЕЛЬ точка или самому указать перед использованием РАЗДЕЛИТЕЛЬ точка - DecemalSeparator:='.'; И все все заработало. В хлепе к стати ничего о разделителе миллисекунд не увидел... |