Cum pot să scad timpul în Delphi? Adică, la operațiunea 12:10:00 minus 12:00:00, răspunsul este = 10 minute (sau 600 de secunde).
totul se face simplu. Traduceți timpul în câteva secunde, luați-l și apoi inversați-l)
Există o funcție standard pentru această operațiune?
N-am găsit nimic la legătură. Am aflat doar că există un astfel de modul standard DateUtils.pas, dar nu am găsit f-ju-ul necesar în el.
> Dr. geniu # xA0; (04.10.08 11:18) [4]
> dar n-am găsit f-ju-ul necesar în el.
Secunde Între alte funcții similare găsiți diferența în secunde, minute, ore etc.
// momentul adevărului
Titlu: = FloatToStr ((T1-T2) * SecsPerDay);
Există această scădere, în Delphi se face cu ajutorul operatorului "-"
[8] + dar timpul din Delphi este doar un număr. reală.
Mai exact, întreaga parte a numărului este data, iar partea fracționată este timpul.
funcție MS_ComFnPrintTimeInterval (ds, de: TDateTime): șir;
// ds - data / ora de începere
// de-end-date-end time
var
# xA0; tms; tme: TTimeStamp;
# xA0; ts, te: LongInt;
# xA0; funcția ExtNCharToN (număr, NDigits: integer): șir;
# xA0; începeți
# xA0; rezultat: = IntToStr (Număr);
# xA0; în timp ce lungimea (rezultat)
începe
# xA0; tms: = DateTimeToTimeStamp (ds);
# xA0; tme: = DateTimeToTimeStamp (de);
# xA0; ts: = tms.Date * 24 * 3600 + tms.Time div 1000;
# xA0; te: = data.Date * 24 * 3600 + timpul Timp div 1000;
# xA0; rezultat: = ""; dacă rezultă apoi: = "-";
# xA0; ts: = Abs (te-ts);
# xA0; rezultat: = rezultat + ExtNCharToN (ts div 3600,1) + ":" +
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; ExtNCharToN ((60) mod 60.2) + ":" +
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; ExtNCharToN (ts mod 60.2);
se încheie;
Ei bine, a scris el. Și asta, înfricoșător.
;)
> Ei bine, dacă numai cu un minus pentru a rezolva "problema" :)
Abs :)
> Nu :) Există un minus pe verso :)
Deși acest lucru este despre minus a început din cauza [11] adică:
> rezultat: = ""; dacă rezultă apoi: = "-";
: o)
da, judecând după
> Dr. Genius (10/04/08 11:05)
și
> Sergey Kokulin (04.10.08 21:05) [10]
telepathic virgo_style ", care lucra la maximum de capacitățile sale, a arătat că, pentru Janus cu dublă față, este complet neclar ceea ce era necesar.
Da, da. judecând după [7] - Am o astfel de suspiciune că întregul cip a fost în 10 * 60 :)
Um. Sunt aici în oglindă, înjunghiat că am uitat de secunde, dar e ca și cum s-ar fi întors.
Când încerc să folosesc f-i, pe care MsGuns le-a oferit cu bunăvoință (datorită lui pentru asta), ceva de genul ăsta este ieșit: "239542: 48: 12".
Eu numesc f-ju ca aceasta:
Form1.Caption: = MS_ComFnPrintTimeInterval (Acum, StrToTime (TimeEdit1.Text));
Poate că e vorba de cel de-al doilea parametru - ar trebui să fie de tip TDateTime, și eu specific TTime.
Form1.Capțiune: = TimeToStr (dt1 - dt2);
Unde dt1> dt2
Îmi pare rău, bineînțeles, dar dacă am mâinile strânse sau nu funcționează nici una dintre opțiunile de mai sus ...
1. Curbe de mâini
2. Cum funcționează?
Varian de la [11] lucrează pentru mine într-o grămadă de cereri. De ce nu funcționează pentru tine, nu e plăcută. Este ceva în care este înțesat, altceva decât TDateTime
Tu Th, ohreneli primi un interval sub forma unei date.
Da, totul este în ordine, până când se decide să se transforme întreaga parte într-o reprezentare de șir a datei, în special pentru intervale mai mici de 24 de ore.
Memorie: 0.77 MB
Durată: 0,028 secunde