Jak konwertować String na DateTime - odwrotność FormatDateTime

Jak konwertować String na DateTime - odwrotność FormatDateTime
IN
  • Rejestracja: dni
  • Ostatnio: dni
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 13:16:062' jako String

Kopiuj
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ć?

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
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.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

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

IN
  • Rejestracja: dni
  • Ostatnio: dni
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.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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.

IN
  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
GetLocaleFormatSettings(1045, FS);

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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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ć.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.