Jak konwertować String na DateTime - odwrotność FormatDateTime

0

Witam.

Mam takie bardzo prymitywne pytanie i na prawde mi głupio że to pisze ale brak mi pomysłu.
Mam datę i czas w formacie '2014-04-12 13062' jako String

var
   _DT: TDateTime;
begin
   // powstałe z FormatDateTime('yyyy-mm-dd hh:nn:ss:zzz', TDateTime);

   S:= '2014-04-12 13:16:062';               // ale normalnie to jest tu Edit.Text

   try
      ShowMessage(S);    // Tymczasowy podgląd roboczy co jest w stringu

      if not SameText(S,'') then _DT:= StrToDateTime(S);           
   except
      MessageBox(Handle,'Sprawdź poprawność daty zakupu.',
              'Popraw dane wejściowe.', MB_OK + MB_ICONInformation);
      exit;
   end;

I program uparcie mi zwraca, że trzeba sprawdzić dane .. pustka w głowie, ma ktoś jakiś pomysł? Pozdrawiam
Edit:
Dodam że w ostateczności da rade na piechotę ale dlaczego funkcja **StrToDateTime ** nie działa albo czy można ją czymś zastąpić?

1

Bez dostępu do kompilatora cięzko coś mi traz doradzić, ale wydaje się że na pewno string jest datą w złym formacie. Podajesz, że mają być sekundy i milisekundy, a pod stringa po minutach podstawiasz od razu milisekundy. Za pewne dlatego jest wyjątek.

1

Kliknij na StrToDateTime tu na forum i użyj drugiej jego wersji.
Prawdopodobnie na twoim komputerze jest ustawiony inny format daty.

0

Dziękuję za podpowiedzi. Spróbuję na czas działania programu ustawić właściwy format czasu i potem przywrócić stary z tempa.

0

Nie podałeś w jakim środowisku piszesz kod, ale pod Lazarusem, w module DateUtils jest funkcja ScanDateTime, która działa odwrotnie niż funkcja FormatDateTime.

0

Piszę w Delphi. Znalazłem już błąd, przy starcie programu ustawiałem niepoprawny format daty - literówka. Ale post się przydał bo dodałem przed operacjami na datach zapamiętuję obecny, ustawiam wymagany i potem przywracam stary.
Tylko przydało by się do kompletu aby nie z tablicy wpisywać na piechotę a jakoś automatycznie pobierać pierwszy parametr (LCID) do funkcji

GetLocaleFormatSettings(1045, FS);

żeby działało bez względu na kraj komputera. Mimo że nie jest takie istotne to już byłby komplet.

0

Ale post się przydał bo dodałem przed operacjami na datach zapamiętuję obecny, ustawiam wymagany i potem przywracam stary.

A w jakim celu te kombinacje? Czemu to ma służyć?

Tylko przydało by się do kompletu aby nie z tablicy wpisywać na piechotę a jakoś automatycznie pobierać pierwszy parametr (LCID)

Zobacz na funkcję GetLocaleInfo - powinna się nadać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1