日付時刻を扱う関数(Today,Now,EncodeDateTime,EndOfAMonth,DayOf) ~Delphiソースコード集
Delphiには日付時刻を扱うユニット「System.DateUtils」があります。
uses System.DateUtils;
とすると日付時刻を操作する関数が使えるようになります。
よく使う関数のサンプルソースコードを示します。
Today関数
本日の日付のみを返す。
Today():TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=Today(); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/02/01 00:00:00.000が表示される
Now関数
本日の日付時刻を返す。
Now():TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=Now(); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/02/01 22:03:01.054が表示される
EncodeDateTime関数
指定した年,月,日,時,分,秒,ミリ秒を表すTDateTime(日付時刻)型の値を返す。
EncodeDateTime(年,月,日,時,分,秒,ミリ秒:Word):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 12, 30, 1, 1, 1, 0); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/12/30 01:01:01.000が表示される
EncodeDate関数
指定した年,月,日を表すTDateTime(日付時刻)型の値を返す。
EncodeDateTime(年,月,日:Word):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 12, 31); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/12/31 00:00:00.000が表示される
EncodeTime関数
指定した時,分,秒,ミリ秒を表すTDateTime(日付時刻)型の値を返す。
EncodeDateTime(時,分,秒,ミリ秒:Word):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeTime(1, 1, 1, 999); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 1899/12/30 01:01:01.999/span>が表示される
DateOf関数
指定した日付時刻から「時,分,秒,ミリ秒」を0にしたTDateTime(日付時刻)型の値を返す。
DateOf(日付時刻:TDateTime):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 12, 30, 12, 24, 32, 999); d:=DateOf(d); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/12/30 00:00:00.000/span>が表示される
TimeOf関数
指定した日付時刻から年月日を削除したTDateTime(日付時刻)型の値を返す。
TimeOf(日付時刻:TDateTime):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 12, 30, 12, 24, 32, 999); d:=TimeOf(d); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 1989/12/30 12:24:32.999が表示される
EndOfAMonth関数
指定年月の最終日の23:59:59.999を返す。
EndOfAMonth(年, 月:Word):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EndOfAMonth(2025, 2); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/02/28 23:59:59.999が表示される
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=DateOf(EndOfAMonth(2025, 2)); //時刻を00:00:00.000にする Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/02/28 00:00:00.000が表示される
DayOf関数
指定日時の「日」のみの値を返す。
DayOf(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EndOfAMonth(2025, 2); Showmessage(DayOf(d).ToString); end; // 28が表示される
MonthOf関数
指定日時の「月」のみの値を返す。
MonthOf(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(MonthOf(d).ToString); end; // 2が表示される
YearOf関数
指定日時の「年」のみの値を返す。
YearOf(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(YearOf(d).ToString); end; // 2025が表示される
HourOf関数
指定日時の「時」のみの値を返す。
YearOf(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(HourOf(d).ToString); end; // 1が表示される
MinuteOf関数
指定日時の「分」のみの値を返す。
MinuteOf(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(MinuteOf(d).ToString); end; // 2が表示される
SecondOf関数
指定日時の「秒」のみの値を返す。
SecondOf(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(SecondOf(d).ToString); end; // 3が表示される
MilliSecondOf関数
指定日時の「ミリ秒」のみの値を返す。
MilliSecondOf(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(MilliSecondOf(d).ToString); end; // 4が表示される
DayOfTheWeek関数
指定日時の「曜日」の値を返す。(1:月曜日、2:火曜日、3:水曜日、4:木曜日、5:金曜日、6:土曜日、7:日曜日)
DayOfTheWeek(日時:TDateTime):Word
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(DayOfTheWeek(d).ToString); end; // 5が表示される
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; const week:array[0..6] of String=('月','火','水','木','金','土','日'); begin d:=EncodeDateTime(2025, 2, 28, 1, 2, 3, 4); Showmessage(week[DayOfTheWeek(d)-1]); end; // 金が表示される
DecodeDateTime関数
日付時刻を「年,月,日,時,分,秒,ミリ秒」に分解する。
DecodeDateTime(日時:TDateTime, Out 年,月,日,時,分,秒,ミリ秒:Word):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; year,month,day,hour,minute,sec,msec:Word; begin d:=EncodeDateTime(2025, 12, 30, 12, 24, 32, 999); DecodeDateTime(d, year,month,day,hour,minute,sec,msec); Format('%d/%d/%d %d:%d:%d.%d', [year,month,day,hour,minute,sec,msec]); end; // 2025/12/30 12:24:32.999が表示される
IncDay関数
日付時刻に指定された日数を足した日付時刻を返す。
IncDay(日時:TDateTime, 足す日数:Integer=1):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 12, 30, 1, 2, 3, 4); d:=incDay(d, 2); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2026/01/01 01:02:03.004が表示される
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=EncodeDateTime(2025, 12, 30, 1, 2, 3, 4); d:=incDay(d, -2); Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 2025/12/28 01:02:03.004が表示される
DateTimeToUnix関数
日付時刻をUNIXタイムスタンプ値に変換して返す。
DateTimeToUnix(日付時刻:TDateTime, AInputIsUTC:Boolean=True):Int64
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; i:INT64; begin d:=EncodeDateTime(1970, 1, 1, 9, 0, 1, 0); // 1970/1/1 09:00:01 UTC i:=DateTimeToUnix(d, True); //True:与えた日付時刻値はUTC Showmessage(i.ToString); end; // 32401が表示される
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; i:INT64; begin d:=EncodeDateTime(1970, 1, 1, 9, 0, 1, 0); // 1970/1/1 09:00:01 JST i:=DateTimeToUnix(d, False); //True:与えた日付時刻値はUTCではない(JST) Showmessage(i.ToString); end; // 1が表示される
UnixToDateTime関数
UNIXタイムスタンプ値を日付時刻型に変換して返す。
UnixToDateTime(UNIXタイムスタンプ値:Int64, AReturnUTC:Boolean=True):TDateTime
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=UnixToDateTime(32401,True); // UTCとして返してもらう Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 1970/01/01 09:00:01.000が表示される
uses System.DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d:TDateTime; begin d:=UnixToDateTime(32401,False); // JSTとして返してもらう Showmessage(FormatDateTime('yyyy/mm/dd hh:nn:ss"."zzz', d)); end; // 1970/01/01 18:00:01.000が表示される