7

TDateTime結果が分単位になるように、変数に秒を追加したいと思います。たとえば、08:30:25 の場合、08:31: TDateTime00 を格納するように変数を変更します。

TDateTime私が使用できるデコード機能があることがわかりました。ただし、変更された時刻を TDateTime 変数に戻すエンコード関数はありません。

4

3 に答える 3

10

それを使用DateUtilsすると、次のようにすることができます。

Uses
  DateUtils;

var
  Seconds : Word;    

Seconds := SecondOfTheMinute(MyTime);  // Seconds from last whole minute
// Seconds := SecondOf(MyTime); is equivalent to SecondOfTheMinute()
if (Seconds > 0) then
  MyTime := IncSecond(MyTime,60 - Seconds);
于 2013-05-20T22:29:07.963 に答える
5

少なくとも最近のバージョンでは確かに存在します。DateUtilsユニット、特にすべてのRecode*ルーチンとEncodeDateTime. このDateUtilsユニットは、Delphi 2010 で既に利用可能であり、おそらく以前のバージョンでも利用可能です。

于 2013-05-20T22:12:52.160 に答える
0

仮説

TDateTimeデータ型は、1899 年 12 月 30 日からの日数を実数で表します。つまり、 の整数部分はTDateTime全体の日数であり、小数部分は時刻を表します。

実用的

したがって、問題は単純な算術演算を使用して解決できます。

var
  Days: TDateTime;
  Mins: Extended;  { widen TDateTime's mantissa by 11 bits to accommodate division error } 

begin
  Days := Date + StrToTime('08:30:25');
  Writeln(DateTimeToStr(Days));


  Mins := Days * 24 * 60 ;  // compute minutes
  Mins := Math.Ceil(Mins);  // round them up
  Days := Mins / (24 * 60); // and back to days
  { or as simple and concise expression as: }
  // Days := Ceil(Days * MinsPerDay) / MinsPerDay;

  Writeln(DateTimeToStr(Days));
于 2013-05-21T14:06:33.673 に答える