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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.05.2013, 20:28
SubbSer SubbSer вне форума
Прохожий
 
Регистрация: 28.05.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Как обработать такое время с точностью до миллесекунд

Как обработать дату вида: 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  
Старый 29.05.2013, 11:05
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Вместо
Код:
Memo1.Lines.Add(DateTimeToStr(Date));
Используй
Код:
Memo1.Lines.Add(FormatDateTime('YYYY-MM-DD HH:NN:SS.ZZZ',Date));

И справка по FormatDateTime
Ответить с цитированием
  #3  
Старый 01.06.2013, 07:56
SubbSer SubbSer вне форума
Прохожий
 
Регистрация: 28.05.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо за подсказку, но это бы тоже не стало работать. И хлеп я тоже активно юзаю)
Тот код который написан у меня полностью аналогичен той строке что и у тебя. Проблема бы в следующем в настройках винды у меня как РАЗДЕЛИТЕЛЬ стояла ЗАПЯТАЯ. Соответственно, не задав разделитель delphi использовал настройки винды и обрабатывая дату использовал РАЗДЕЛИТЕЛЬ запятую! Т.е решения было два поставить в настройках винды РАЗДЕЛИТЕЛЬ точка или самому указать перед использованием РАЗДЕЛИТЕЛЬ точка - DecemalSeparator:='.';
И все все заработало. В хлепе к стати ничего о разделителе миллисекунд не увидел...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter