TDateTime
結果が分単位になるように、変数に秒を追加したいと思います。たとえば、08:30:25 の場合、08:31: TDateTime
00 を格納するように変数を変更します。
TDateTime
私が使用できるデコード機能があることがわかりました。ただし、変更された時刻を TDateTime 変数に戻すエンコード関数はありません。
TDateTime
結果が分単位になるように、変数に秒を追加したいと思います。たとえば、08:30:25 の場合、08:31: TDateTime
00 を格納するように変数を変更します。
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));