数字や文字や日付を整形する(FormatDateTime,FormatFloat,Format関数) ~Delphiソースコード集
Delphiには数字や文字や日付を整形する以下の関数があります。
関数 | 用途 |
---|---|
FormatDateTime(書式文字列, TDateTime型) | TDateTime型の日付/時刻を整形する |
FormatFloat(書式文字列, Double又はSingle型) | Double又はSingle型の浮動小数点値を整形する |
FormatCurr(書式文字列, Currency型) | Currency型の浮動小数点値を整形する |
Format(書式文字列, 配列) | 配列の値をまとめて整形する (日付型の整形はできない) |
FormatDateTime関数
TDateTime型の日付/時刻を整形します。
FormatDateTime(書式文字列, TDateTime型)
指定子 | 表示内容 |
---|---|
yyyy | 年[西暦4桁](0000~9999) |
yy | 年[西暦2桁](00~99) |
ee | 年[元号2桁](01~) |
E | 年[元号](1~) |
gg | 元号 |
G | 元号[1文字] |
mm | 月[2桁](01~12) |
m | 月(1~12) |
dd | 日[2桁](01~31) |
d | 日(1~31) |
hh | 時[2桁](00~23) |
h | 時(0~23) |
AM/PMhh | 時[2桁](AM12~AM01~PM12~PM11) |
AM/PMh | 時(AM12~AM1~PM12~PM11) |
ampmhh | 時[2桁](午前12~午前01~午後12~午後11) |
ampmh | 時(午前12~午前1~午後12~午後11) |
nn | 分[2桁](00~59) |
n | 分(0~59) |
ss | 秒[2桁](00~59) |
s | 秒(0~59) |
zzz | ミリ秒[3桁](000~999) |
Z | ミリ秒(0~999) |
"文字列" | 文字列をそのまま表示 |
/ | 「/」を表示 |
: | 「:」を表示 |
例1
uses System.SysUtils;
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=EncodeDate(2024,1,1)+EncodeTime(0,1,2,123);
ShowMessage(
FormatDateTime('yyyy/mm/dd hh:nn:ss.zzz', d)
);
end;
// 2024/01/01 00:01:02.123が表示される
例2
uses System.SysUtils;
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=EncodeDate(2024,1,1)+EncodeTime(0,1,2,123);
ShowMessage(
FormatDateTime('ggee"年"mm"月"dd"日" ampmhh"時"nn"分"ss.zzz"秒"', d)
);
end;
// 令和06年01月01日 午前12時01分02.123秒が表示される
FormatFloat関数、FormatCurr関数
FormatFloat関数、FormatCurr関数は引数の型の扱われ方が違うだけで浮動小数点値を整形します。
FormatFloat(書式文字列, Double又はSingle型)
FormatCurr(書式文字列, Currency型))
指定子 | 表示内容 |
---|---|
0 | 数字を表示する指定子。この位置の桁に数字が無い場合は0を表示する。 |
# | 数字を表示する指定子。この位置の桁に数字が無い場合は表示しない。 |
.(ピリオド) | 小数点を表示する指定子。 |
,(カンマ) | 桁区切りを表示する指定子。 |
"文字列" | 文字列をそのまま表示 |
;(セミコロン) |
正の数、負の数、0 のためのセクションを区切る指定子。正の数の時の書式;負の数の時の書式;0の時の書式
|
例1
uses System.SysUtils;
procedure TForm1.Button1Click(Sender: TObject);
var f:Double;;
begin
f:=-1234.56789;
ShowMessage(
FormatFloat('#,##0.000"円"',f)
);
end;
// -1,234.568円が表示される
例2
uses System.SysUtils;
procedure TForm1.Button1Click(Sender: TObject);
var f:Double;;
begin
f:=-1234.56789;
ShowMessage(
FormatFloat('"\+"#,##0.000;"\-"#,##0.000;"\0"',f)
);
end;
// \-1,234.568が表示される
Forma関数
Format関数は配列の値をまとめて整形しますが日付の整形はできません。
Forma(書式文字列, 配列)
書式文字列は複数又は1個の書式指定子で構成されます。
1個の書式指定子は%から始まる以下の形式で指定します。
"%" [index ":"] ["-"] [width] ["." prec] type
- index ":"
-
(省略可能)オフセットインデックス指定子
第2引数の配列の0から数えて何番目の値を使用するかを指定します。
例:ShowMessage(Format('%2:s%0:4d%1:5.2f',[1, 2.2, 'ABC']));
ABC 1 2.20 - "-"
-
(省略可能)左揃えインジケータ
省略すると右揃えですが左揃えにします。
例:ShowMessage(Format('%-10s',['ABC']));
ABC
例:ShowMessage(Format('%10s',['ABC']));
ABC - width
-
(省略可能)幅指定子
値を表示する最小幅を指定します。幅指定子に満たない場合のみ、空白(半角スペース)で埋められます。
例:ShowMessage(Format('%3s%8d',['ABC', 24]));
ABC 24
- "." prec
-
(省略可能)精度指定子
小数点以下、何桁を表示するか指定します。
例:ShowMessage(Format('%4.2f %10.3f',[3.1415, 123.45678]));
3.14 123.457
- type
-
(省略不可)変換型文字
以下の表の値を使用可能です。主な変換型文字 値 意味 d 整数の引数を10進数文字列に変換します。 f 浮動小数点の引数を10進数文字列に変換します。
(マイナスの場合は符号も出力)n 浮動小数点の引数を10進数文字列に変換します。
セパレータも出力されます
(マイナスの場合は符号も出力)m 浮動小数点の引数を通貨の文字列に変換します。 s 文字列の引数を文字列で出力 x 整数の引数を16進数文字列に変換します。
13A 1,023.457