TDateTime結果が分単位になるように、変数に秒を追加したいと思います。たとえば、08:30:25 の場合、08:31: TDateTime00 を格納するように変数を変更します。
TDateTime私が使用できるデコード機能があることがわかりました。ただし、変更された時刻を TDateTime 変数に戻すエンコード関数はありません。
TDateTime結果が分単位になるように、変数に秒を追加したいと思います。たとえば、08:30:25 の場合、08:31: TDateTime00 を格納するように変数を変更します。
TDateTime私が使用できるデコード機能があることがわかりました。ただし、変更された時刻を TDateTime 変数に戻すエンコード関数はありません。
それを使用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);
少なくとも最近のバージョンでは確かに存在します。DateUtilsユニット、特にすべてのRecode*ルーチンとEncodeDateTime. このDateUtilsユニットは、Delphi 2010 で既に利用可能であり、おそらく以前のバージョンでも利用可能です。
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));