日時期間形式の「整える」の結果がおかしい

投稿者: 投稿日:2020/01/11(Sat) 15:58:55 No.1878

 こんにちは、お世話になります。

 日時期間形式の「整える」手順で意図した結果が得られずに困っています。
 とりあえず、サンプルから記載します。

----- サンプルソース -----
値という日時期間形式(「00:01:30.100」)を作る
内容は、値を「dd\.hh\:mm\:ss\.fff」に整えたもの
内容を表示する
--------------------

 上記のソースを実行すると、

00.00:01:30.100

となるはずが、

01.12:01:30.100

となってしまいます。
 日時期間形式は、C#のTimeSpanのことかと勝手に想像していたのですが、違うのでしょうか。
 ちなみに、C#のTimeSpanであれば、意図した結果が出力されることを確認しています。
 しょうがないので、現在は下記のようにしています。

----- 対策用ソース -----
値という日時期間形式(「00:01:30.100」)を作る
内容は、「{0:D2}.{1:D2}:{2:D2}:{3:D2}.{4:D3}」を{値の日数, 値の時間, 値の分数, 値の秒数, 値のミリ秒数}で埋めたもの
内容を表示する
--------------------

 しかし、できれば1番目に提示したソースで動くようになればと思うのですが、修正いただくことは可能でしょうか。
 環境は、Windows10 64ビット、プロデル 1.6.990です。

 以上、よろしくお願いいたします。

「日付時刻」と同じ書式を指定してください

投稿者:ゆうと 投稿日:2020/01/19(Sun) 20:18:26 No.1880

こんにちは ゆうとです。

「日時期間形式」の「整える」手順の書式は、「日付時刻」種類の「整える」と同じ書式を指定してください。
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings

次のような記述で正しく出力されるかと思います。
--------------
値という日時期間形式(「00:01:30.100」)を作る
内容は、値を「dd.HH:mm:ss.fff」に整えたもの
内容を表示する
--------------

>  日時期間形式は、C#のTimeSpanのことかと勝手に想像していたのですが、違うのでしょうか。
TimeSpan型と同じものという理解で問題ありませんが「整える」手順に限っては、内部でDateTime型に変換してから、その書式に沿って出力するようにしています。

理由は、TimeSpanのToStringメソッドの書式にクセがあるためで、利便性を考えて、DateTimeのToStringメソッドを使っています。

後ほどリファレンスも更新致します。
ご確認ください。

Re: 「日付時刻」と同じ書式を指定してください

投稿者: 投稿日:2020/01/19(Sun) 22:52:50 No.1885

 こんばんは、お世話になります。

 なるほど、日付時刻と同じ書式を指定すればいいんですね。
 いただいたサンプルで試してみたところ、とりあえずはうまくいきました。
 ただ、日数の部分が0ではなく、1になってしまうのが気になりますが。

 以上、今後ともよろしくお願いいたします。

▲ページの先頭へ

- WebForum -