Autor Téma: DateTime  (Přečteno 374 krát)

Leonardo

  • Host
DateTime
« kdy: 13-06-2017, 09:42:28 »
Dobrý den.
Jak na to když chci podmínku IF, pokud je soubor starší jak 5 minut.

Kód: Delphi [Vybrat]
  1. var
  2.  aktualni_cas,time_souboru : TDateTime;
  3. begin
  4.   aktualni_cas:= time;
  5.   FileAge('d:\čti.txt', time_souboru);
  6.   Memo1.Lines.Add(TimeToStr(aktualni_cas));
  7.   Memo1.Lines.Add(TimeToStr(time_souboru));
  8. end;


Offline oxo

  • Guru
  • *****
  • Příspěvků: 696
  • Karma: 40
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Embarcadero Technology Partner, juj. Člen Lazarus týmu, oj.

Leonardo

  • Host
Re:DateTime
« Odpověď #2 kdy: 13-06-2017, 10:45:00 »
Kód: Delphi [Vybrat]
  1. DateTime1 := StrToTime('8:30');
  2. DateTime2 := StrToTime('11:35');
  3. Label1.Caption:= (IntToSTr(DateUtils.MinutesBetween(DateTime1,DateTime2)));

Tak je to ok

Kód: Delphi [Vybrat]
  1.  
  2. DateTime1 := StrToTime('11:30');
  3. DateTime2 := StrToTime('7:30');

Toto mi vrací 240

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2874
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:DateTime
« Odpověď #3 kdy: 13-06-2017, 11:45:17 »
Možno Ti pomôže funkcia MinuteSpan, uvedená v danom odkaze.

OT: namiesto StrToTime použi EncodeTime().
« Poslední změna: 13-06-2017, 11:47:30 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:DateTime
« Odpověď #4 kdy: 13-06-2017, 17:46:29 »
Kód: Delphi [Vybrat]
  1.  
  2. DateTime1 := StrToTime('11:30');
  3. DateTime2 := StrToTime('7:30');

Toto mi vrací 240
Kolik bys očekával, že ti to vypíše?

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 127
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:DateTime
« Odpověď #5 kdy: 14-06-2017, 10:14:19 »
typ TDateTime je v podstate desatinne cislo, kde cela cas su dni a desatinna cast su hodiny/minuty/sekundy z dna.
napr. o dvanastej na obed, je presny cas x.5000.
takze dve premenne typu TDateTime mozes scitavat, odcitavat. takze ak odcitas tie dva casy od seba (samozrejme mensi od vacsieho, na tom zalezi), tak vysledok potom zase mozes previest na minuty, a pod, a zistit, ci je vacsi ako nejaky porovnanvany pocet casovych jednotiek. ako bolo pisane, tak napr. to MinutesBetween:
if MinutesBetween(time_souboru, aktualni_cas) > 5 then...
alebo
if (aktualni_cas - time_souboru) > EncodeTime(0, 5, 0, 0) then...

EncodeTime - http://docwiki.embarcadero.com/Libraries/Berlin/en/System.SysUtils.EncodeTime

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:DateTime
« Odpověď #6 kdy: 14-06-2017, 10:50:51 »
desatinna cast su hodiny/minuty/sekundy z dna. napr. o dvanastej na obed, je presny cas x.5000.
Tohle bych si dovolil preformulovat, protoze desetinna cast ma rozmer [den] a vyjadruje, jaka cast dne reprezentovaneho poctem ms tj. literalem MSecsPerDay od pulnoci uplynula. Zbytek je uz jen prepoctu na konkretni jednotku.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: