カスタム TimeSpan 書式指定文字列
TimeSpan 書式指定文字列は、書式設定操作の結果として得 TimeSpan 値の文字列形式を定義します。 カスタム書式指定文字列は、1 つ以上のカスタム TimeSpan 書式指定子と任意の数のリテラル文字で構成されます。 Standard TimeSpan 書式指定文字列 ではない文字列は、カスタムの TimeSpan 書式指定文字列として解釈されます。
重要
カスタム TimeSpan 書式指定子には、プレースホルダー区切り記号は含まれません。たとえば、時間から日、分から時間、秒を秒から分ける記号などです。 代わりに、これらのシンボルを文字列リテラルとしてカスタム書式指定文字列に含める必要があります。 たとえば、"dd\.hh\:mm"
では、日と時間の間の区切り記号としてピリオド (.) を定義し、コロン (:)を時間と分の間の区切り記号として定義します。
カスタム TimeSpan 書式指定子には、負の時間間隔と正の時間間隔を区別できる記号記号も含まれません。 符号記号を含めるには、条件付きロジックを使用して書式指定文字列を作成する必要があります。 その他の文字 セクションには、例が含まれています。
TimeSpan 値の文字列表現は、TimeSpan.ToString メソッドのオーバーロードの呼び出しと、String.Formatなどの複合書式設定をサポートするメソッドによって生成されます。 詳細については、「書式の種類 と複合書式 する」を参照してください。 次の例は、書式設定操作でのカスタム書式指定文字列の使用を示しています。
using System;
public class Example
{
public static void Main()
{
TimeSpan duration = new TimeSpan(1, 12, 23, 62);
string output = null;
output = "Time of Travel: " + duration.ToString("%d") + " days";
Console.WriteLine(output);
output = "Time of Travel: " + duration.ToString(@"dd\.hh\:mm\:ss");
Console.WriteLine(output);
Console.WriteLine($"Time of Travel: {duration:%d} day(s)");
Console.WriteLine($"Time of Travel: {duration:dd\\.hh\\:mm\\:ss} days");
}
}
// The example displays the following output:
// Time of Travel: 1 days
// Time of Travel: 01.12:24:02
// Time of Travel: 1 day(s)
// Time of Travel: 01.12:24:02 days
Module Example
Public Sub Main()
Dim duration As New TimeSpan(1, 12, 23, 62)
Dim output As String = Nothing
output = "Time of Travel: " + duration.ToString("%d") + " days"
Console.WriteLine(output)
output = "Time of Travel: " + duration.ToString("dd\.hh\:mm\:ss")
Console.WriteLine(output)
Console.WriteLine("Time of Travel: {0:%d} day(s)", duration)
Console.WriteLine("Time of Travel: {0:dd\.hh\:mm\:ss} days", duration)
End Sub
End Module
' The example displays the following output:
' Time of Travel: 1 days
' Time of Travel: 01.12:24:02
' Time of Travel: 1 day(s)
' Time of Travel: 01.12:24:02 days
カスタム TimeSpan 書式指定文字列は、解析操作に必要な入力文字列の形式を定義するために、TimeSpan.ParseExact および TimeSpan.TryParseExact メソッドでも使用されます。 (解析では、値の文字列形式をその値に変換します)。次の例は、解析操作での標準書式指定文字列の使用を示しています。
using System;
public class Example
{
public static void Main()
{
string value = null;
TimeSpan interval;
value = "6";
if (TimeSpan.TryParseExact(value, "%d", null, out interval))
Console.WriteLine($"{value} --> {interval.ToString("c")}");
else
Console.WriteLine($"Unable to parse '{value}'");
value = "16:32.05";
if (TimeSpan.TryParseExact(value, @"mm\:ss\.ff", null, out interval))
Console.WriteLine($"{value} --> {interval.ToString("c")}");
else
Console.WriteLine($"Unable to parse '{value}'");
value= "12.035";
if (TimeSpan.TryParseExact(value, "ss\\.fff", null, out interval))
Console.WriteLine($"{value} --> {interval.ToString("c")}");
else
Console.WriteLine($"Unable to parse '{value}'");
}
}
// The example displays the following output:
// 6 --> 6.00:00:00
// 16:32.05 --> 00:16:32.0500000
// 12.035 --> 00:00:12.0350000
Module Example
Public Sub Main()
Dim value As String = Nothing
Dim interval As TimeSpan
value = "6"
If TimeSpan.TryParseExact(value, "%d", Nothing, interval) Then
Console.WriteLine("{0} --> {1}", value, interval.ToString("c"))
Else
Console.WriteLine("Unable to parse '{0}'", value)
End If
value = "16:32.05"
If TimeSpan.TryParseExact(value, "mm\:ss\.ff", Nothing, interval) Then
Console.WriteLine("{0} --> {1}", value, interval.ToString("c"))
Else
Console.WriteLine("Unable to parse '{0}'", value)
End If
value = "12.035"
If TimeSpan.TryParseExact(value, "ss\.fff", Nothing, interval) Then
Console.WriteLine("{0} --> {1}", value, interval.ToString("c"))
Else
Console.WriteLine("Unable to parse '{0}'", value)
End If
End Sub
End Module
' The example displays the following output:
' 6 --> 6.00:00:00
' 16:32.05 --> 00:16:32.0500000
' 12.035 --> 00:00:12.0350000
次の表では、カスタムの日付と時刻の書式指定子について説明します。
書式指定子 | 説明 | 例 |
---|---|---|
"d","%d" | 時間間隔の日数。 詳細情報:"d" カスタム書式指定子。 |
new TimeSpan(6, 14, 32, 17, 685): %d -- "6" を>d\.hh\:mm -- "6.14:32" を> |
"dd"-"ddddddd" | 時間間隔の日数。必要に応じて先頭にゼロが埋め込まれます。 詳細情報: "dd"-"ddddddd" カスタム書式指定子 します。 |
new TimeSpan(6, 14, 32, 17, 685): ddd -- "006">dd\.hh\:mm -- "06.14:32" を> |
"h","%h" | 日数の一部としてカウントされない時間間隔内の時間全体の数。 1 桁の時間の先頭に 0 はありません。 詳細情報:"h" カスタム書式指定子。 |
new TimeSpan(6, 14, 32, 17, 685): %h -- "14" を>hh\:mm -- "14:32" を> |
"hh" | 日数の一部としてカウントされない時間間隔内の時間全体の数。 1 桁の時間の先頭には 0 が付きます。 詳細情報:"hh" カスタム書式指定子。 |
new TimeSpan(6, 14, 32, 17, 685): hh -- "14" を>new TimeSpan(6, 8, 32, 17, 685): hh --> 08 |
"m","%m" | 時間または日の一部として含まれない、時間間隔の全体の分数。 1 桁の分には先頭にゼロがありません。 詳細情報:"m" カスタム書式指定子。 |
new TimeSpan(6, 14, 8, 17, 685): %m -- "8" を>h\:m -- "14:8" を> |
"mm" | 時間または日の一部として含まれない、時間間隔の全体の分数。 1 桁の分の先頭には 0 が付きます。 詳細情報:"mm" カスタム書式指定子。 |
new TimeSpan(6, 14, 8, 17, 685): mm -- "08" を>new TimeSpan(6, 8, 5, 17, 685): d\.hh\:mm\:ss --> 6.08:05:17 |
"s","%s" | 時間、日、または分の一部として含まれない時間間隔の秒数。 1 桁の秒の先頭に 0 がありません。 詳細情報:"s" カスタム書式指定子。 |
TimeSpan.FromSeconds(12.965) :%s --> 12s\.fff --> 12.965 |
"ss" | 時間、日、または分の一部として含まれない時間間隔の秒数。 1 桁の秒の先頭には 0 が付けられます。 詳細情報:"ss" カスタム書式指定子。 |
TimeSpan.FromSeconds(6.965) :ss --> 06ss\.fff --> 06.965 |
"f","%f" | 時間間隔内の秒の 10 分の 1。 詳細情報:"F" カスタム書式指定子。 |
TimeSpan.FromSeconds(6.895) :f --> 8ss\.f --> 06.8 |
"ff" | 時間間隔内の秒の 100 分の 1。 詳細情報:"ff" カスタム書式指定子。 |
TimeSpan.FromSeconds(6.895) :ff --> 89ss\.ff --> 06.89 |
"fff" | 時間間隔のミリ秒。 詳細情報:"fff" カスタム書式指定子。 |
TimeSpan.FromSeconds(6.895) :fff --> 895ss\.fff --> 06.895 |
"ffff" | 時間間隔内の秒の 10,000 分の 1。 詳細情報:"ffff" カスタム書式指定子。 |
TimeSpan.Parse("0:0:6.8954321") :ffff --> 8954ss\.ffff --> 06.8954 |
"fffff" | 時間間隔内の秒の 100,000 分の 1。 詳細情報:"fffff" カスタム書式指定子。 |
TimeSpan.Parse("0:0:6.8954321") :fffff --> 89543ss\.fffff --> 06.89543 |
"ffffff" | 時間間隔内の秒の 100 万分の 1。 詳細情報:"ffffff" カスタム書式指定子。 |
TimeSpan.Parse("0:0:6.8954321") :ffffff --> 895432ss\.ffffff --> 06.895432 |
"fffffff" | 時間間隔内の秒の 1,000 万分の 1 (または小数部のティック)。 詳細情報:"fffffff" カスタム書式指定子。 |
TimeSpan.Parse("0:0:6.8954321") :fffffff --> 8954321ss\.fffffff --> 06.8954321 |
"F","%F" | 時間間隔内の秒の 10 分の 1。 数字が 0 の場合は何も表示されません。 詳細情報:"F" カスタム書式指定子。 |
TimeSpan.Parse("00:00:06.32") :%F : 3TimeSpan.Parse("0:0:3.091") :ss\.F : 03。 |
"FF" | 時間間隔内の秒の 100 分の 1。 末尾の小数部のゼロまたは 2 桁のゼロは含まれません。 詳細情報:"FF" カスタム書式指定子。 |
TimeSpan.Parse("00:00:06.329") :FF : 32TimeSpan.Parse("0:0:3.101") :ss\.FF : 03.1 |
"FFF" | 時間間隔のミリ秒。 末尾の小数部のゼロは含まれません。 詳細: |
TimeSpan.Parse("00:00:06.3291") :FFF : 329TimeSpan.Parse("0:0:3.1009") :ss\.FFF : 03.1 |
"FFFF" | 時間間隔内の秒の 10,000 分の 1。 末尾の小数部のゼロは含まれません。 詳細情報:"FFFF" カスタム書式指定子。 |
TimeSpan.Parse("00:00:06.32917") :FFFFF : 3291TimeSpan.Parse("0:0:3.10009") :ss\.FFFF : 03.1 |
"FFFFF" | 時間間隔内の秒の 100,000 分の 1。 末尾の小数部のゼロは含まれません。 詳細情報:"FFFFF" カスタム書式指定子。 |
TimeSpan.Parse("00:00:06.329179") :FFFFF : 32917TimeSpan.Parse("0:0:3.100009") :ss\.FFFFF : 03.1 |
"FFFFFF" | 時間間隔内の秒の 100 万分の 1。 末尾の小数部のゼロは表示されません。 詳細情報:"FFFFFF" カスタム書式指定子。 |
TimeSpan.Parse("00:00:06.3291791") :FFFFFF : 329179TimeSpan.Parse("0:0:3.1000009") :ss\.FFFFFF : 03.1 |
"FFFFFFF" | 時間間隔内の秒の 1,000 万。 小数部の末尾のゼロまたは 7 個のゼロは表示されません。 詳細情報:"FFFFFFF" カスタム書式指定子。 |
TimeSpan.Parse("00:00:06.3291791") :FFFFFF : 3291791TimeSpan.Parse("0:0:3.1900000") :ss\.FFFFFF : 03.19 |
'文字列' | リテラル文字列の区切り記号。 詳細: その他の文字。 |
new TimeSpan(14, 32, 17): hh':'mm':'ss -- "14:32:17" を> |
\ | エスケープ文字。 詳細: その他の文字。 |
new TimeSpan(14, 32, 17): hh\:mm\:ss -- "14:32:17" を> |
その他の文字 | その他のエスケープされていない文字は、カスタム書式指定子として解釈されます。 詳細情報: その他の文字。 |
new TimeSpan(14, 32, 17): hh\:mm\:ss -- "14:32:17" を> |
"d" カスタム書式指定子
"d" カスタム書式指定子は、時間間隔の日数を表す TimeSpan.Days プロパティの値を出力します。 値に複数の数字が含まれている場合でも、TimeSpan 値の完全な日数が出力されます。 TimeSpan.Days プロパティの値が 0 の場合、指定子は "0" を出力します。
"d" カスタム書式指定子を単独で使用する場合は、"%d" を指定して、標準書式指定文字列として誤って解釈されないようにします。 具体的な例を次に示します。
TimeSpan ts1 = new TimeSpan(16, 4, 3, 17, 250);
Console.WriteLine(ts1.ToString("%d"));
// Displays 16
Dim ts As New TimeSpan(16, 4, 3, 17, 250)
Console.WriteLine(ts.ToString("%d"))
' Displays 16
次の例は、"d" カスタム書式指定子の使用方法を示しています。
TimeSpan ts2 = new TimeSpan(4, 3, 17);
Console.WriteLine(ts2.ToString(@"d\.hh\:mm\:ss"));
TimeSpan ts3 = new TimeSpan(3, 4, 3, 17);
Console.WriteLine(ts3.ToString(@"d\.hh\:mm\:ss"));
// The example displays the following output:
// 0.04:03:17
// 3.04:03:17
Dim ts2 As New TimeSpan(4, 3, 17)
Console.WriteLine(ts2.ToString("d\.hh\:mm\:ss"))
Dim ts3 As New TimeSpan(3, 4, 3, 17)
Console.WriteLine(ts3.ToString("d\.hh\:mm\:ss"))
' The example displays the following output:
' 0.04:03:17
' 3.04:03:17
"dd"-"dddddddd" カスタム書式指定子
"dd"、"ddd"、"dddd"、"ddddd"、"dddddd"、"dddd"、および "ddddddd" カスタム書式指定子は、時間間隔の日数を表す TimeSpan.Days プロパティの値を出力します。
出力文字列には、書式指定子の "d" 文字の数で指定された最小桁数が含まれており、必要に応じて先頭にゼロが埋め込まれます。 日数の数字が書式指定子の "d" 文字の数を超える場合は、結果文字列に完全な日数が出力されます。
次の例では、これらの書式指定子を使用して、2 つの TimeSpan 値の文字列形式を表示します。 最初の時間間隔の日数の値は 0 です。2 番目の日の部分の値は 365 です。
TimeSpan ts1 = new TimeSpan(0, 23, 17, 47);
TimeSpan ts2 = new TimeSpan(365, 21, 19, 45);
for (int ctr = 2; ctr <= 8; ctr++)
{
string fmt = new String('d', ctr) + @"\.hh\:mm\:ss";
Console.WriteLine($"{fmt} --> {ts1:" + fmt + "}");
Console.WriteLine($"{fmt} --> {ts2:" + fmt + "}");
Console.WriteLine();
}
// The example displays the following output:
// dd\.hh\:mm\:ss --> 00.23:17:47
// dd\.hh\:mm\:ss --> 365.21:19:45
//
// ddd\.hh\:mm\:ss --> 000.23:17:47
// ddd\.hh\:mm\:ss --> 365.21:19:45
//
// dddd\.hh\:mm\:ss --> 0000.23:17:47
// dddd\.hh\:mm\:ss --> 0365.21:19:45
//
// ddddd\.hh\:mm\:ss --> 00000.23:17:47
// ddddd\.hh\:mm\:ss --> 00365.21:19:45
//
// dddddd\.hh\:mm\:ss --> 000000.23:17:47
// dddddd\.hh\:mm\:ss --> 000365.21:19:45
//
// ddddddd\.hh\:mm\:ss --> 0000000.23:17:47
// ddddddd\.hh\:mm\:ss --> 0000365.21:19:45
//
// dddddddd\.hh\:mm\:ss --> 00000000.23:17:47
// dddddddd\.hh\:mm\:ss --> 00000365.21:19:45
Dim ts1 As New TimeSpan(0, 23, 17, 47)
Dim ts2 As New TimeSpan(365, 21, 19, 45)
For ctr As Integer = 2 To 8
Dim fmt As String = New String("d"c, ctr) + "\.hh\:mm\:ss"
Console.WriteLine("{0} --> {1:" + fmt + "}", fmt, ts1)
Console.WriteLine("{0} --> {1:" + fmt + "}", fmt, ts2)
Console.WriteLine()
Next
' The example displays the following output:
' dd\.hh\:mm\:ss --> 00.23:17:47
' dd\.hh\:mm\:ss --> 365.21:19:45
'
' ddd\.hh\:mm\:ss --> 000.23:17:47
' ddd\.hh\:mm\:ss --> 365.21:19:45
'
' dddd\.hh\:mm\:ss --> 0000.23:17:47
' dddd\.hh\:mm\:ss --> 0365.21:19:45
'
' ddddd\.hh\:mm\:ss --> 00000.23:17:47
' ddddd\.hh\:mm\:ss --> 00365.21:19:45
'
' dddddd\.hh\:mm\:ss --> 000000.23:17:47
' dddddd\.hh\:mm\:ss --> 000365.21:19:45
'
' ddddddd\.hh\:mm\:ss --> 0000000.23:17:47
' ddddddd\.hh\:mm\:ss --> 0000365.21:19:45
'
' dddddddd\.hh\:mm\:ss --> 00000000.23:17:47
' dddddddd\.hh\:mm\:ss --> 00000365.21:19:45
"h" カスタム書式指定子
"h" カスタム書式指定子は、TimeSpan.Hours プロパティの値を出力します。これは、その日のコンポーネントの一部としてカウントされない時間間隔の時間数を表します。 TimeSpan.Hours プロパティの値が 0 から 9 の場合は 1 桁の文字列値を返し、TimeSpan.Hours プロパティの値の範囲が 10 から 23 の場合は 2 桁の文字列値を返します。
"h" カスタム書式指定子を単独で使用する場合は、"%h" を指定して、標準書式指定文字列として誤って解釈されないようにします。 具体的な例を次に示します。
TimeSpan ts = new TimeSpan(3, 42, 0);
Console.WriteLine($"{ts:%h} hours {ts:%m} minutes");
// The example displays the following output:
// 3 hours 42 minutes
Dim ts As New TimeSpan(3, 42, 0)
Console.WriteLine("{0:%h} hours {0:%m} minutes", ts)
' The example displays the following output:
' 3 hours 42 minutes
通常、解析操作では、1 つの数値のみを含む入力文字列が日数として解釈されます。 代わりに"%h" カスタム書式指定子を使用して、数値文字列を時間数として解釈できます。 具体的な例を次に示します。
string value = "8";
TimeSpan interval;
if (TimeSpan.TryParseExact(value, "%h", null, out interval))
Console.WriteLine(interval.ToString("c"));
else
Console.WriteLine($"Unable to convert '{value}' to a time interval");
// The example displays the following output:
// 08:00:00
Dim value As String = "8"
Dim interval As TimeSpan
If TimeSpan.TryParseExact(value, "%h", Nothing, interval) Then
Console.WriteLine(interval.ToString("c"))
Else
Console.WriteLine("Unable to convert '{0}' to a time interval",
value)
End If
' The example displays the following output:
' 08:00:00
次の例は、"h" カスタム書式指定子の使用を示しています。
TimeSpan ts1 = new TimeSpan(14, 3, 17);
Console.WriteLine(ts1.ToString(@"d\.h\:mm\:ss"));
TimeSpan ts2 = new TimeSpan(3, 4, 3, 17);
Console.WriteLine(ts2.ToString(@"d\.h\:mm\:ss"));
// The example displays the following output:
// 0.14:03:17
// 3.4:03:17
Dim ts1 As New TimeSpan(14, 3, 17)
Console.WriteLine(ts1.ToString("d\.h\:mm\:ss"))
Dim ts2 As New TimeSpan(3, 4, 3, 17)
Console.WriteLine(ts2.ToString("d\.h\:mm\:ss"))
' The example displays the following output:
' 0.14:03:17
' 3.4:03:17
"hh" カスタム書式指定子
"hh" カスタム書式指定子は、TimeSpan.Hours プロパティの値を出力します。これは、その日のコンポーネントの一部としてカウントされない時間間隔の時間数を表します。 0 ~ 9 の値の場合、出力文字列には先頭に 0 が含まれます。
通常、解析操作では、1 つの数値のみを含む入力文字列が日数として解釈されます。 代わりに "hh" カスタム書式指定子を使用して、数値文字列を時間数として解釈できます。 具体的な例を次に示します。
string value = "08";
TimeSpan interval;
if (TimeSpan.TryParseExact(value, "hh", null, out interval))
Console.WriteLine(interval.ToString("c"));
else
Console.WriteLine($"Unable to convert '{value}' to a time interval");
// The example displays the following output:
// 08:00:00
Dim value As String = "08"
Dim interval As TimeSpan
If TimeSpan.TryParseExact(value, "hh", Nothing, interval) Then
Console.WriteLine(interval.ToString("c"))
Else
Console.WriteLine("Unable to convert '{0}' to a time interval",
value)
End If
' The example displays the following output:
' 08:00:00
次の例は、"hh" カスタム書式指定子の使用を示しています。
TimeSpan ts1 = new TimeSpan(14, 3, 17);
Console.WriteLine(ts1.ToString(@"d\.hh\:mm\:ss"));
TimeSpan ts2 = new TimeSpan(3, 4, 3, 17);
Console.WriteLine(ts2.ToString(@"d\.hh\:mm\:ss"));
// The example displays the following output:
// 0.14:03:17
// 3.04:03:17
Dim ts1 As New TimeSpan(14, 3, 17)
Console.WriteLine(ts1.ToString("d\.hh\:mm\:ss"))
Dim ts2 As New TimeSpan(3, 4, 3, 17)
Console.WriteLine(ts2.ToString("d\.hh\:mm\:ss"))
' The example displays the following output:
' 0.14:03:17
' 3.04:03:17
"m" カスタム書式指定子
"m" カスタム書式指定子は、TimeSpan.Minutes プロパティの値を出力します。これは、その日のコンポーネントの一部としてカウントされない時間間隔の分数を表します。 TimeSpan.Minutes プロパティの値が 0 から 9 の場合は 1 桁の文字列値を返し、TimeSpan.Minutes プロパティの値の範囲が 10 から 59 の場合は 2 桁の文字列値を返します。
"m" カスタム書式指定子を単独で使用する場合は、"%m" を指定して、標準書式指定文字列として誤って解釈されないようにします。 具体的な例を次に示します。
TimeSpan ts = new TimeSpan(3, 42, 0);
Console.WriteLine($"{ts:%h} hours {ts:%m} minutes");
// The example displays the following output:
// 3 hours 42 minutes
Dim ts As New TimeSpan(3, 42, 0)
Console.WriteLine("{0:%h} hours {0:%m} minutes", ts)
' The example displays the following output:
' 3 hours 42 minutes
通常、解析操作では、1 つの数値のみを含む入力文字列が日数として解釈されます。 代わりに"%m" カスタム書式指定子を使用して、数値文字列を分数として解釈できます。 具体的な例を次に示します。
string value = "3";
TimeSpan interval;
if (TimeSpan.TryParseExact(value, "%m", null, out interval))
Console.WriteLine(interval.ToString("c"));
else
Console.WriteLine($"Unable to convert '{value}' to a time interval");
// The example displays the following output:
// 00:03:00
Dim value As String = "3"
Dim interval As TimeSpan
If TimeSpan.TryParseExact(value, "%m", Nothing, interval) Then
Console.WriteLine(interval.ToString("c"))
Else
Console.WriteLine("Unable to convert '{0}' to a time interval",
value)
End If
' The example displays the following output:
' 00:03:00
次の例は、"m" カスタム書式指定子の使用方法を示しています。
TimeSpan ts1 = new TimeSpan(0, 6, 32);
Console.WriteLine($"{ts1:m\\:ss} minutes");
TimeSpan ts2 = new TimeSpan(3, 4, 3, 17);
Console.WriteLine($"Elapsed time: {ts2:m\\:ss}");
// The example displays the following output:
// 6:32 minutes
// Elapsed time: 18:44
Dim ts1 As New TimeSpan(0, 6, 32)
Console.WriteLine("{0:m\:ss} minutes", ts1)
Dim ts2 As New TimeSpan(0, 18, 44)
Console.WriteLine("Elapsed time: {0:m\:ss}", ts2)
' The example displays the following output:
' 6:32 minutes
' Elapsed time: 18:44
"mm" カスタム書式指定子
"mm" カスタム書式指定子は、TimeSpan.Minutes プロパティの値を出力します。これは、時間または日のコンポーネントの一部として含まれていない時間間隔の分数を表します。 0 ~ 9 の値の場合、出力文字列には先頭に 0 が含まれます。
通常、解析操作では、1 つの数値のみを含む入力文字列が日数として解釈されます。 代わりに "mm" カスタム書式指定子を使用して、数値文字列を分数として解釈できます。 具体的な例を次に示します。
string value = "07";
TimeSpan interval;
if (TimeSpan.TryParseExact(value, "mm", null, out interval))
Console.WriteLine(interval.ToString("c"));
else
Console.WriteLine($"Unable to convert '{value}' to a time interval");
// The example displays the following output:
// 00:07:00
Dim value As String = "05"
Dim interval As TimeSpan
If TimeSpan.TryParseExact(value, "mm", Nothing, interval) Then
Console.WriteLine(interval.ToString("c"))
Else
Console.WriteLine("Unable to convert '{0}' to a time interval",
value)
End If
' The example displays the following output:
' 00:05:00
次の例は、"mm" カスタム書式指定子の使用を示しています。
TimeSpan departTime = new TimeSpan(11, 12, 00);
TimeSpan arriveTime = new TimeSpan(16, 28, 00);
Console.WriteLine($"Travel time: {arriveTime - departTime:hh\\:mm}");
// The example displays the following output:
// Travel time: 05:16
Dim departTime As New TimeSpan(11, 12, 00)
Dim arriveTime As New TimeSpan(16, 28, 00)
Console.WriteLine("Travel time: {0:hh\:mm}",
arriveTime - departTime)
' The example displays the following output:
' Travel time: 05:16
"s" カスタム書式指定子
"s" カスタム書式指定子は、TimeSpan.Seconds プロパティの値を出力します。これは、時間、日、または分のコンポーネントの一部として含まれない時間間隔の秒数を表します。 TimeSpan.Seconds プロパティの値が 0 から 9 の場合は 1 桁の文字列値を返し、TimeSpan.Seconds プロパティの値の範囲が 10 から 59 の場合は 2 桁の文字列値を返します。
"s" カスタム書式指定子を単独で使用する場合は、"%s" を指定して、標準書式指定文字列として誤って解釈されないようにします。 具体的な例を次に示します。
TimeSpan ts = TimeSpan.FromSeconds(12.465);
Console.WriteLine(ts.ToString("%s"));
// The example displays the following output:
// 12
Dim ts As TimeSpan = TimeSpan.FromSeconds(12.465)
Console.WriteLine(ts.ToString("%s"))
' The example displays the following output:
' 12
通常、解析操作では、1 つの数値のみを含む入力文字列が日数として解釈されます。 代わりに "%s" カスタム書式指定子を使用して、数値文字列を秒数として解釈できます。 具体的な例を次に示します。
string value = "9";
TimeSpan interval;
if (TimeSpan.TryParseExact(value, "%s", null, out interval))
Console.WriteLine(interval.ToString("c"));
else
Console.WriteLine($"Unable to convert '{value}' to a time interval");
// The example displays the following output:
// 00:00:09
Dim value As String = "9"
Dim interval As TimeSpan
If TimeSpan.TryParseExact(value, "%s", Nothing, interval) Then
Console.WriteLine(interval.ToString("c"))
Else
Console.WriteLine("Unable to convert '{0}' to a time interval",
value)
End If
' The example displays the following output:
' 00:00:09
次の例は、"s" カスタム書式指定子の使用を示しています。
TimeSpan startTime = new TimeSpan(0, 12, 30, 15, 0);
TimeSpan endTime = new TimeSpan(0, 12, 30, 21, 3);
Console.WriteLine(@"Elapsed Time: {0:s\:fff} seconds",
endTime - startTime);
// The example displays the following output:
// Elapsed Time: 6:003 seconds
Dim startTime As New TimeSpan(0, 12, 30, 15, 0)
Dim endTime As New TimeSpan(0, 12, 30, 21, 3)
Console.WriteLine("Elapsed Time: {0:s\:fff} seconds",
endTime - startTime)
' The example displays the following output:
' Elapsed Time: 6:003 seconds
"ss" カスタム書式指定子
"ss" カスタム書式指定子は、TimeSpan.Seconds プロパティの値を出力します。これは、時間、日、または分のコンポーネントの一部として含まれない時間間隔の秒数を表します。 0 ~ 9 の値の場合、出力文字列には先頭に 0 が含まれます。
通常、解析操作では、1 つの数値のみを含む入力文字列が日数として解釈されます。 代わりに "ss" カスタム書式指定子を使用して、数値文字列を秒数として解釈できます。 具体的な例を次に示します。
string[] values = { "49", "9", "06" };
TimeSpan interval;
foreach (string value in values)
{
if (TimeSpan.TryParseExact(value, "ss", null, out interval))
Console.WriteLine(interval.ToString("c"));
else
Console.WriteLine($"Unable to convert '{value}' to a time interval");
}
// The example displays the following output:
// 00:00:49
// Unable to convert '9' to a time interval
// 00:00:06
Dim values() As String = {"49", "9", "06"}
Dim interval As TimeSpan
For Each value As String In values
If TimeSpan.TryParseExact(value, "ss", Nothing, interval) Then
Console.WriteLine(interval.ToString("c"))
Else
Console.WriteLine("Unable to convert '{0}' to a time interval",
value)
End If
Next
' The example displays the following output:
' 00:00:49
' Unable to convert '9' to a time interval
' 00:00:06
次の例は、"ss" カスタム書式指定子の使用を示しています。
TimeSpan interval1 = TimeSpan.FromSeconds(12.60);
Console.WriteLine(interval1.ToString(@"ss\.fff"));
TimeSpan interval2 = TimeSpan.FromSeconds(6.485);
Console.WriteLine(interval2.ToString(@"ss\.fff"));
// The example displays the following output:
// 12.600
// 06.485
Dim interval1 As TimeSpan = TimeSpan.FromSeconds(12.60)
Console.WriteLine(interval1.ToString("ss\.fff"))
Dim interval2 As TimeSpan = TimeSpan.FromSeconds(6.485)
Console.WriteLine(interval2.ToString("ss\.fff"))
' The example displays the following output:
' 12.600
' 06.485
"f" カスタム書式指定子
"f" カスタム書式指定子は、時間間隔で秒の 10 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 1 桁の小数部を含める必要があります。
"f" カスタム書式指定子を単独で使用する場合は、"%f" を指定して、標準書式指定文字列として誤って解釈されないようにします。
次の例では、"f" カスタム書式指定子を使用して、秒の 10 分の 1 を TimeSpan 値で表示します。 "f" は最初に唯一の書式指定子として使用され、次にカスタム書式指定文字列の "s" 指定子と組み合わされます。
TimeSpan ts = new TimeSpan(1003498765432);
string fmt;
Console.WriteLine(ts.ToString("c"));
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
if (fmt.Length == 1) fmt = "%" + fmt;
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts);
}
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts);
}
// The example displays the following output:
// %f: 8
// ff: 87
// fff: 876
// ffff: 8765
// fffff: 87654
// ffffff: 876543
// fffffff: 8765432
//
// s\.f: 29.8
// s\.ff: 29.87
// s\.fff: 29.876
// s\.ffff: 29.8765
// s\.fffff: 29.87654
// s\.ffffff: 29.876543
// s\.fffffff: 29.8765432
Dim ts As New TimeSpan(1003498765432)
Dim fmt As String
Console.WriteLine(ts.ToString("c"))
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
If fmt.Length = 1 Then fmt = "%" + fmt
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts)
Next
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
Console.WriteLine("{0,10}: {1:s\." + fmt + "}", "s\." + fmt, ts)
Next
' The example displays the following output:
' %f: 8
' ff: 87
' fff: 876
' ffff: 8765
' fffff: 87654
' ffffff: 876543
' fffffff: 8765432
'
' s\.f: 29.8
' s\.ff: 29.87
' s\.fff: 29.876
' s\.ffff: 29.8765
' s\.fffff: 29.87654
' s\.ffffff: 29.876543
' s\.fffffff: 29.8765432
"ff" カスタム書式指定子
"ff" カスタム書式指定子は、時間間隔で秒の 100 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 2 桁の小数部を含める必要があります。
次の例では、"ff" カスタム書式指定子を使用して、秒の 100 分の 1 を TimeSpan 値で表示します。 "ff" は最初に唯一の書式指定子として使用され、次にカスタム書式指定文字列の "s" 指定子と組み合わされます。
TimeSpan ts = new TimeSpan(1003498765432);
string fmt;
Console.WriteLine(ts.ToString("c"));
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
if (fmt.Length == 1) fmt = "%" + fmt;
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts);
}
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts);
}
// The example displays the following output:
// %f: 8
// ff: 87
// fff: 876
// ffff: 8765
// fffff: 87654
// ffffff: 876543
// fffffff: 8765432
//
// s\.f: 29.8
// s\.ff: 29.87
// s\.fff: 29.876
// s\.ffff: 29.8765
// s\.fffff: 29.87654
// s\.ffffff: 29.876543
// s\.fffffff: 29.8765432
Dim ts As New TimeSpan(1003498765432)
Dim fmt As String
Console.WriteLine(ts.ToString("c"))
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
If fmt.Length = 1 Then fmt = "%" + fmt
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts)
Next
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
Console.WriteLine("{0,10}: {1:s\." + fmt + "}", "s\." + fmt, ts)
Next
' The example displays the following output:
' %f: 8
' ff: 87
' fff: 876
' ffff: 8765
' fffff: 87654
' ffffff: 876543
' fffffff: 8765432
'
' s\.f: 29.8
' s\.ff: 29.87
' s\.fff: 29.876
' s\.ffff: 29.8765
' s\.fffff: 29.87654
' s\.ffffff: 29.876543
' s\.fffffff: 29.8765432
"fff" カスタム書式指定子
"fff" カスタム書式指定子 (3 つの "f" 文字) は、時間間隔でミリ秒を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 TimeSpan.ParseExact または TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 3 桁の小数部を含める必要があります。
次の例では、"fff" カスタム書式指定子を使用して、ミリ秒を TimeSpan 値で表示します。 "fff" は最初に唯一の書式指定子として使用され、次にカスタム書式指定文字列の "s" 指定子と組み合わされます。
TimeSpan ts = new TimeSpan(1003498765432);
string fmt;
Console.WriteLine(ts.ToString("c"));
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
if (fmt.Length == 1) fmt = "%" + fmt;
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts);
}
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts);
}
// The example displays the following output:
// %f: 8
// ff: 87
// fff: 876
// ffff: 8765
// fffff: 87654
// ffffff: 876543
// fffffff: 8765432
//
// s\.f: 29.8
// s\.ff: 29.87
// s\.fff: 29.876
// s\.ffff: 29.8765
// s\.fffff: 29.87654
// s\.ffffff: 29.876543
// s\.fffffff: 29.8765432
Dim ts As New TimeSpan(1003498765432)
Dim fmt As String
Console.WriteLine(ts.ToString("c"))
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
If fmt.Length = 1 Then fmt = "%" + fmt
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts)
Next
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
Console.WriteLine("{0,10}: {1:s\." + fmt + "}", "s\." + fmt, ts)
Next
' The example displays the following output:
' %f: 8
' ff: 87
' fff: 876
' ffff: 8765
' fffff: 87654
' ffffff: 876543
' fffffff: 8765432
'
' s\.f: 29.8
' s\.ff: 29.87
' s\.fff: 29.876
' s\.ffff: 29.8765
' s\.fffff: 29.87654
' s\.ffffff: 29.876543
' s\.fffffff: 29.8765432
"ffff" カスタム書式指定子
"ffff" カスタム書式指定子 (4 つの "f" 文字を含む) は、時間間隔で秒の 10,000 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 TimeSpan.ParseExact または TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 4 桁の小数部を含める必要があります。
次の例では、"ffff" カスタム書式指定子を使用して、秒の 10,000 分の 1 を TimeSpan 値で表示します。 "ffff" は最初に唯一の書式指定子として使用され、次にカスタム書式指定文字列の "s" 指定子と組み合わされます。
TimeSpan ts = new TimeSpan(1003498765432);
string fmt;
Console.WriteLine(ts.ToString("c"));
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
if (fmt.Length == 1) fmt = "%" + fmt;
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts);
}
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts);
}
// The example displays the following output:
// %f: 8
// ff: 87
// fff: 876
// ffff: 8765
// fffff: 87654
// ffffff: 876543
// fffffff: 8765432
//
// s\.f: 29.8
// s\.ff: 29.87
// s\.fff: 29.876
// s\.ffff: 29.8765
// s\.fffff: 29.87654
// s\.ffffff: 29.876543
// s\.fffffff: 29.8765432
Dim ts As New TimeSpan(1003498765432)
Dim fmt As String
Console.WriteLine(ts.ToString("c"))
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
If fmt.Length = 1 Then fmt = "%" + fmt
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts)
Next
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
Console.WriteLine("{0,10}: {1:s\." + fmt + "}", "s\." + fmt, ts)
Next
' The example displays the following output:
' %f: 8
' ff: 87
' fff: 876
' ffff: 8765
' fffff: 87654
' ffffff: 876543
' fffffff: 8765432
'
' s\.f: 29.8
' s\.ff: 29.87
' s\.fff: 29.876
' s\.ffff: 29.8765
' s\.fffff: 29.87654
' s\.ffffff: 29.876543
' s\.fffffff: 29.8765432
"fffff" カスタム書式指定子
"fffff" カスタム書式指定子 (5 つの "f" 文字) は、時間間隔で秒の 10000 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 TimeSpan.ParseExact または TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 5 桁の小数部を含める必要があります。
次の例では、"fffff" カスタム書式指定子を使用して、秒の 10000 分の 1 を TimeSpan 値で表示します。 "fffff" は最初に唯一の書式指定子として使用され、次にカスタム書式指定文字列の "s" 指定子と組み合わされます。
TimeSpan ts = new TimeSpan(1003498765432);
string fmt;
Console.WriteLine(ts.ToString("c"));
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
if (fmt.Length == 1) fmt = "%" + fmt;
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts);
}
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts);
}
// The example displays the following output:
// %f: 8
// ff: 87
// fff: 876
// ffff: 8765
// fffff: 87654
// ffffff: 876543
// fffffff: 8765432
//
// s\.f: 29.8
// s\.ff: 29.87
// s\.fff: 29.876
// s\.ffff: 29.8765
// s\.fffff: 29.87654
// s\.ffffff: 29.876543
// s\.fffffff: 29.8765432
Dim ts As New TimeSpan(1003498765432)
Dim fmt As String
Console.WriteLine(ts.ToString("c"))
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
If fmt.Length = 1 Then fmt = "%" + fmt
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts)
Next
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
Console.WriteLine("{0,10}: {1:s\." + fmt + "}", "s\." + fmt, ts)
Next
' The example displays the following output:
' %f: 8
' ff: 87
' fff: 876
' ffff: 8765
' fffff: 87654
' ffffff: 876543
' fffffff: 8765432
'
' s\.f: 29.8
' s\.ff: 29.87
' s\.fff: 29.876
' s\.ffff: 29.8765
' s\.fffff: 29.87654
' s\.ffffff: 29.876543
' s\.fffffff: 29.8765432
"ffffff" カスタム書式指定子
"ffffff" カスタム書式指定子 (6 個の "f" 文字) は、時間間隔で 1 秒の 100 万分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 TimeSpan.ParseExact または TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 6 桁の小数部を含める必要があります。
次の例では、"ffffff" カスタム書式指定子を使用して、1 秒の 100 万分の 1 を TimeSpan 値で表示します。 最初に唯一の書式指定子として使用され、次にカスタム書式指定文字列の "s" 指定子と組み合わされます。
TimeSpan ts = new TimeSpan(1003498765432);
string fmt;
Console.WriteLine(ts.ToString("c"));
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
if (fmt.Length == 1) fmt = "%" + fmt;
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts);
}
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts);
}
// The example displays the following output:
// %f: 8
// ff: 87
// fff: 876
// ffff: 8765
// fffff: 87654
// ffffff: 876543
// fffffff: 8765432
//
// s\.f: 29.8
// s\.ff: 29.87
// s\.fff: 29.876
// s\.ffff: 29.8765
// s\.fffff: 29.87654
// s\.ffffff: 29.876543
// s\.fffffff: 29.8765432
Dim ts As New TimeSpan(1003498765432)
Dim fmt As String
Console.WriteLine(ts.ToString("c"))
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
If fmt.Length = 1 Then fmt = "%" + fmt
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts)
Next
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
Console.WriteLine("{0,10}: {1:s\." + fmt + "}", "s\." + fmt, ts)
Next
' The example displays the following output:
' %f: 8
' ff: 87
' fff: 876
' ffff: 8765
' fffff: 87654
' ffffff: 876543
' fffffff: 8765432
'
' s\.f: 29.8
' s\.ff: 29.87
' s\.fff: 29.876
' s\.ffff: 29.8765
' s\.fffff: 29.87654
' s\.ffffff: 29.876543
' s\.fffffff: 29.8765432
"fffffff" カスタム書式指定子
"fffffff" カスタム書式指定子 (7 文字の "f" 文字) は、時間間隔で 1000 万分の 1 秒 (またはティックの小数部) を出力します。 TimeSpan.ParseExact または TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 7 桁の小数部を含める必要があります。
次の例では、"fffffff" カスタム書式指定子を使用して、TimeSpan 値の小数部のティック数を表示します。 最初に唯一の書式指定子として使用され、次にカスタム書式指定文字列の "s" 指定子と組み合わされます。
TimeSpan ts = new TimeSpan(1003498765432);
string fmt;
Console.WriteLine(ts.ToString("c"));
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
if (fmt.Length == 1) fmt = "%" + fmt;
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts);
}
Console.WriteLine();
for (int ctr = 1; ctr <= 7; ctr++) {
fmt = new String('f', ctr);
Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts);
}
// The example displays the following output:
// %f: 8
// ff: 87
// fff: 876
// ffff: 8765
// fffff: 87654
// ffffff: 876543
// fffffff: 8765432
//
// s\.f: 29.8
// s\.ff: 29.87
// s\.fff: 29.876
// s\.ffff: 29.8765
// s\.fffff: 29.87654
// s\.ffffff: 29.876543
// s\.fffffff: 29.8765432
Dim ts As New TimeSpan(1003498765432)
Dim fmt As String
Console.WriteLine(ts.ToString("c"))
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
If fmt.Length = 1 Then fmt = "%" + fmt
Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts)
Next
Console.WriteLine()
For ctr = 1 To 7
fmt = New String("f"c, ctr)
Console.WriteLine("{0,10}: {1:s\." + fmt + "}", "s\." + fmt, ts)
Next
' The example displays the following output:
' %f: 8
' ff: 87
' fff: 876
' ffff: 8765
' fffff: 87654
' ffffff: 876543
' fffffff: 8765432
'
' s\.f: 29.8
' s\.ff: 29.87
' s\.fff: 29.876
' s\.ffff: 29.8765
' s\.fffff: 29.87654
' s\.ffffff: 29.876543
' s\.fffffff: 29.8765432
"F" カスタム書式指定子
"F" カスタム書式指定子は、時間間隔で秒の 10 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 時間間隔の秒の 10 分の 1 の値が 0 の場合、結果文字列には含まれません。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、2 桁目の 10 分の 1 が省略可能です。
"F" カスタム書式指定子を単独で使用する場合は、"%F" を指定して、標準書式指定文字列として誤って解釈されないようにします。
次の例では、"F" カスタム書式指定子を使用して、秒の 1/10 を TimeSpan 値で表示します。 また、解析操作でこのカスタム書式指定子も使用します。
Console.WriteLine("Formatting:");
TimeSpan ts1 = TimeSpan.Parse("0:0:3.669");
Console.WriteLine($"{ts1} ('%F') --> {ts1:%F}");
TimeSpan ts2 = TimeSpan.Parse("0:0:3.091");
Console.WriteLine($"{ts2} ('ss\\.F') --> {ts2:ss\\.F}");
Console.WriteLine();
Console.WriteLine("Parsing:");
string[] inputs = { "0:0:03.", "0:0:03.1", "0:0:03.12" };
string fmt = @"h\:m\:ss\.F";
TimeSpan ts3;
foreach (string input in inputs) {
if (TimeSpan.TryParseExact(input, fmt, null, out ts3))
Console.WriteLine($"{input} ('{fmt}') --> {ts3}");
else
Console.WriteLine($"Cannot parse {input} with '{fmt}'.");
}
// The example displays the following output:
// Formatting:
// 00:00:03.6690000 ('%F') --> 6
// 00:00:03.0910000 ('ss\.F') --> 03.
//
// Parsing:
// 0:0:03. ('h\:m\:ss\.F') --> 00:00:03
// 0:0:03.1 ('h\:m\:ss\.F') --> 00:00:03.1000000
// Cannot parse 0:0:03.12 with 'h\:m\:ss\.F'.
Console.WriteLine("Formatting:")
Dim ts1 As TimeSpan = TimeSpan.Parse("0:0:3.669")
Console.WriteLine("{0} ('%F') --> {0:%F}", ts1)
Dim ts2 As TimeSpan = TimeSpan.Parse("0:0:3.091")
Console.WriteLine("{0} ('ss\.F') --> {0:ss\.F}", ts2)
Console.WriteLine()
Console.WriteLine("Parsing:")
Dim inputs() As String = {"0:0:03.", "0:0:03.1", "0:0:03.12"}
Dim fmt As String = "h\:m\:ss\.F"
Dim ts3 As TimeSpan
For Each input As String In inputs
If TimeSpan.TryParseExact(input, fmt, Nothing, ts3)
Console.WriteLine("{0} ('{1}') --> {2}", input, fmt, ts3)
Else
Console.WriteLine("Cannot parse {0} with '{1}'.",
input, fmt)
End If
Next
' The example displays the following output:
' Formatting:
' 00:00:03.6690000 ('%F') --> 6
' 00:00:03.0910000 ('ss\.F') --> 03.
'
' Parsing:
' 0:0:03. ('h\:m\:ss\.F') --> 00:00:03
' 0:0:03.1 ('h\:m\:ss\.F') --> 00:00:03.1000000
' Cannot parse 0:0:03.12 with 'h\:m\:ss\.F'.
"FF" カスタム書式指定子
"FF" カスタム書式指定子は、時間間隔で秒の 100 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 末尾に小数部のゼロがある場合、結果文字列には含まれません。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、2 桁目の 100 分の 1 が省略可能です。
次の例では、"FF" カスタム書式指定子を使用して、秒の 100 分の 1 を TimeSpan 値で表示します。 また、解析操作でこのカスタム書式指定子も使用します。
Console.WriteLine("Formatting:");
TimeSpan ts1 = TimeSpan.Parse("0:0:3.697");
Console.WriteLine($"{ts1} ('FF') --> {ts1:FF}");
TimeSpan ts2 = TimeSpan.Parse("0:0:3.809");
Console.WriteLine($"{ts2} ('ss\\.FF') --> {ts2:ss\\.FF}");
Console.WriteLine();
Console.WriteLine("Parsing:");
string[] inputs = { "0:0:03.", "0:0:03.1", "0:0:03.127" };
string fmt = @"h\:m\:ss\.FF";
TimeSpan ts3;
foreach (string input in inputs) {
if (TimeSpan.TryParseExact(input, fmt, null, out ts3))
Console.WriteLine($"{input} ('{fmt}') --> {ts3}");
else
Console.WriteLine($"Cannot parse {input} with '{fmt}'.");
}
// The example displays the following output:
// Formatting:
// 00:00:03.6970000 ('FF') --> 69
// 00:00:03.8090000 ('ss\.FF') --> 03.8
//
// Parsing:
// 0:0:03. ('h\:m\:ss\.FF') --> 00:00:03
// 0:0:03.1 ('h\:m\:ss\.FF') --> 00:00:03.1000000
// Cannot parse 0:0:03.127 with 'h\:m\:ss\.FF'.
Console.WriteLine("Formatting:")
Dim ts1 As TimeSpan = TimeSpan.Parse("0:0:3.697")
Console.WriteLine("{0} ('FF') --> {0:FF}", ts1)
Dim ts2 As TimeSpan = TimeSpan.Parse("0:0:3.809")
Console.WriteLine("{0} ('ss\.FF') --> {0:ss\.FF}", ts2)
Console.WriteLine()
Console.WriteLine("Parsing:")
Dim inputs() As String = {"0:0:03.", "0:0:03.1", "0:0:03.127"}
Dim fmt As String = "h\:m\:ss\.FF"
Dim ts3 As TimeSpan
For Each input As String In inputs
If TimeSpan.TryParseExact(input, fmt, Nothing, ts3)
Console.WriteLine("{0} ('{1}') --> {2}", input, fmt, ts3)
Else
Console.WriteLine("Cannot parse {0} with '{1}'.",
input, fmt)
End If
Next
' The example displays the following output:
' Formatting:
' 00:00:03.6970000 ('FF') --> 69
' 00:00:03.8090000 ('ss\.FF') --> 03.8
'
' Parsing:
' 0:0:03. ('h\:m\:ss\.FF') --> 00:00:03
' 0:0:03.1 ('h\:m\:ss\.FF') --> 00:00:03.1000000
' Cannot parse 0:0:03.127 with 'h\:m\:ss\.FF'.
"FFF" カスタム書式指定子
"FFF" カスタム書式指定子 (3 つの "F" 文字) は、時間間隔でミリ秒を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 末尾に小数部のゼロがある場合、結果文字列には含まれません。 TimeSpan.ParseExact または TimeSpan.TryParseExact メソッドを呼び出す解析操作では、10 分の 1、100、1000 分の 1 の 2 桁目が省略可能です。
次の例では、"FFF" カスタム書式指定子を使用して、1 秒の 1000 分の 1 を TimeSpan 値で表示します。 また、解析操作でこのカスタム書式指定子も使用します。
Console.WriteLine("Formatting:");
TimeSpan ts1 = TimeSpan.Parse("0:0:3.6974");
Console.WriteLine($"{ts1} ('FFF') --> {ts1:FFF}");
TimeSpan ts2 = TimeSpan.Parse("0:0:3.8009");
Console.WriteLine($"{ts2} ('ss\\.FFF') --> {ts2:ss\\.FFF}");
Console.WriteLine();
Console.WriteLine("Parsing:");
string[] inputs = { "0:0:03.", "0:0:03.12", "0:0:03.1279" };
string fmt = @"h\:m\:ss\.FFF";
TimeSpan ts3;
foreach (string input in inputs) {
if (TimeSpan.TryParseExact(input, fmt, null, out ts3))
Console.WriteLine($"{input} ('{fmt}') --> {ts3}");
else
Console.WriteLine($"Cannot parse {input} with '{fmt}'.");
}
// The example displays the following output:
// Formatting:
// 00:00:03.6974000 ('FFF') --> 697
// 00:00:03.8009000 ('ss\.FFF') --> 03.8
//
// Parsing:
// 0:0:03. ('h\:m\:ss\.FFF') --> 00:00:03
// 0:0:03.12 ('h\:m\:ss\.FFF') --> 00:00:03.1200000
// Cannot parse 0:0:03.1279 with 'h\:m\:ss\.FFF'.
Console.WriteLine("Formatting:")
Dim ts1 As TimeSpan = TimeSpan.Parse("0:0:3.6974")
Console.WriteLine("{0} ('FFF') --> {0:FFF}", ts1)
Dim ts2 As TimeSpan = TimeSpan.Parse("0:0:3.8009")
Console.WriteLine("{0} ('ss\.FFF') --> {0:ss\.FFF}", ts2)
Console.WriteLine()
Console.WriteLine("Parsing:")
Dim inputs() As String = {"0:0:03.", "0:0:03.12", "0:0:03.1279"}
Dim fmt As String = "h\:m\:ss\.FFF"
Dim ts3 As TimeSpan
For Each input As String In inputs
If TimeSpan.TryParseExact(input, fmt, Nothing, ts3)
Console.WriteLine("{0} ('{1}') --> {2}", input, fmt, ts3)
Else
Console.WriteLine("Cannot parse {0} with '{1}'.",
input, fmt)
End If
Next
' The example displays the following output:
' Formatting:
' 00:00:03.6974000 ('FFF') --> 697
' 00:00:03.8009000 ('ss\.FFF') --> 03.8
'
' Parsing:
' 0:0:03. ('h\:m\:ss\.FFF') --> 00:00:03
' 0:0:03.12 ('h\:m\:ss\.FFF') --> 00:00:03.1200000
' Cannot parse 0:0:03.1279 with 'h\:m\:ss\.FFF'.
"FFFF" カスタム書式指定子
"FFFF" カスタム書式指定子 (4 つの "F" 文字) は、時間間隔で秒の 10,000 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 末尾に小数部のゼロがある場合、結果文字列には含まれません。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、10 分の 1、100、1000、10,000 分の 1 の 2 桁目が省略可能です。
次の例では、"FFFF" カスタム書式指定子を使用して、秒の 10,000 分の 1 を TimeSpan 値で表示します。 また、解析操作で "FFFF" カスタム書式指定子も使用します。
Console.WriteLine("Formatting:");
TimeSpan ts1 = TimeSpan.Parse("0:0:3.69749");
Console.WriteLine($"{ts1} ('FFFF') --> {ts1:FFFF}");
TimeSpan ts2 = TimeSpan.Parse("0:0:3.80009");
Console.WriteLine($"{ts2} ('ss\\.FFFF') --> {ts2:ss\\.FFFF}");
Console.WriteLine();
Console.WriteLine("Parsing:");
string[] inputs = { "0:0:03.", "0:0:03.12", "0:0:03.12795" };
string fmt = @"h\:m\:ss\.FFFF";
TimeSpan ts3;
foreach (string input in inputs) {
if (TimeSpan.TryParseExact(input, fmt, null, out ts3))
Console.WriteLine($"{input} ('{fmt}') --> {ts3}");
else
Console.WriteLine($"Cannot parse {input} with '{fmt}'.");
}
// The example displays the following output:
// Formatting:
// 00:00:03.6974900 ('FFFF') --> 6974
// 00:00:03.8000900 ('ss\.FFFF') --> 03.8
//
// Parsing:
// 0:0:03. ('h\:m\:ss\.FFFF') --> 00:00:03
// 0:0:03.12 ('h\:m\:ss\.FFFF') --> 00:00:03.1200000
// Cannot parse 0:0:03.12795 with 'h\:m\:ss\.FFFF'.
Console.WriteLine("Formatting:")
Dim ts1 As TimeSpan = TimeSpan.Parse("0:0:3.69749")
Console.WriteLine("{0} ('FFFF') --> {0:FFFF}", ts1)
Dim ts2 As TimeSpan = TimeSpan.Parse("0:0:3.80009")
Console.WriteLine("{0} ('ss\.FFFF') --> {0:ss\.FFFF}", ts2)
Console.WriteLine()
Console.WriteLine("Parsing:")
Dim inputs() As String = {"0:0:03.", "0:0:03.12", "0:0:03.12795"}
Dim fmt As String = "h\:m\:ss\.FFFF"
Dim ts3 As TimeSpan
For Each input As String In inputs
If TimeSpan.TryParseExact(input, fmt, Nothing, ts3)
Console.WriteLine("{0} ('{1}') --> {2}", input, fmt, ts3)
Else
Console.WriteLine("Cannot parse {0} with '{1}'.",
input, fmt)
End If
Next
' The example displays the following output:
' Formatting:
' 00:00:03.6974900 ('FFFF') --> 6974
' 00:00:03.8000900 ('ss\.FFFF') --> 03.8
'
' Parsing:
' 0:0:03. ('h\:m\:ss\.FFFF') --> 00:00:03
' 0:0:03.12 ('h\:m\:ss\.FFFF') --> 00:00:03.1200000
' Cannot parse 0:0:03.12795 with 'h\:m\:ss\.FFFF'.
"FFFFF" カスタム書式指定子
"FFFFF" カスタム書式指定子 (5 つの "F" 文字) は、時間間隔で秒の 10000 分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 末尾に小数部のゼロがある場合、結果文字列には含まれません。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、10 分の 1、100、1000、10,000 分の 1、10,000 分の 1 の 2 桁目の存在は省略可能です。
次の例では、"FFFFF" カスタム書式指定子を使用して、秒の 10000 分の 1 を TimeSpan 値で表示します。 また、解析操作で "FFFFF" カスタム書式指定子も使用します。
Console.WriteLine("Formatting:");
TimeSpan ts1 = TimeSpan.Parse("0:0:3.697497");
Console.WriteLine($"{ts1} ('FFFFF') --> {ts1:FFFFF}");
TimeSpan ts2 = TimeSpan.Parse("0:0:3.800009");
Console.WriteLine($"{ts2} ('ss\\.FFFFF') --> {ts2:ss\\.FFFFF}");
Console.WriteLine();
Console.WriteLine("Parsing:");
string[] inputs = { "0:0:03.", "0:0:03.12", "0:0:03.127956" };
string fmt = @"h\:m\:ss\.FFFFF";
TimeSpan ts3;
foreach (string input in inputs) {
if (TimeSpan.TryParseExact(input, fmt, null, out ts3))
Console.WriteLine($"{input} ('{fmt}') --> {ts3}");
else
Console.WriteLine($"Cannot parse {input} with '{fmt}'.");
}
// The example displays the following output:
// Formatting:
// 00:00:03.6974970 ('FFFFF') --> 69749
// 00:00:03.8000090 ('ss\.FFFFF') --> 03.8
//
// Parsing:
// 0:0:03. ('h\:m\:ss\.FFFF') --> 00:00:03
// 0:0:03.12 ('h\:m\:ss\.FFFF') --> 00:00:03.1200000
// Cannot parse 0:0:03.127956 with 'h\:m\:ss\.FFFF'.
Console.WriteLine("Formatting:")
Dim ts1 As TimeSpan = TimeSpan.Parse("0:0:3.697497")
Console.WriteLine("{0} ('FFFFF') --> {0:FFFFF}", ts1)
Dim ts2 As TimeSpan = TimeSpan.Parse("0:0:3.800009")
Console.WriteLine("{0} ('ss\.FFFFF') --> {0:ss\.FFFFF}", ts2)
Console.WriteLine()
Console.WriteLine("Parsing:")
Dim inputs() As String = {"0:0:03.", "0:0:03.12", "0:0:03.127956"}
Dim fmt As String = "h\:m\:ss\.FFFFF"
Dim ts3 As TimeSpan
For Each input As String In inputs
If TimeSpan.TryParseExact(input, fmt, Nothing, ts3)
Console.WriteLine("{0} ('{1}') --> {2}", input, fmt, ts3)
Else
Console.WriteLine("Cannot parse {0} with '{1}'.",
input, fmt)
End If
Next
' The example displays the following output:
' Formatting:
' 00:00:03.6974970 ('FFFFF') --> 69749
' 00:00:03.8000090 ('ss\.FFFFF') --> 03.8
'
' Parsing:
' 0:0:03. ('h\:m\:ss\.FFFF') --> 00:00:03
' 0:0:03.12 ('h\:m\:ss\.FFFF') --> 00:00:03.1200000
' Cannot parse 0:0:03.127956 with 'h\:m\:ss\.FFFF'.
"FFFFFF" カスタム書式指定子
"FFFFFF" カスタム書式指定子 (6 文字の "F" 文字) は、時間間隔で 1 秒の 1000 万分の 1 を出力します。 書式設定操作では、残りの小数部の数字は切り捨てられます。 末尾に小数部のゼロがある場合、結果文字列には含まれません。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、10 分の 1、100、1000、10,000、10,000 分の 1、2 桁目の 100 万分の 1 が省略可能です。
次の例では、"FFFFFF" カスタム書式指定子を使用して、1 秒の 100 万分の 1 を TimeSpan 値で表示します。 また、解析操作でこのカスタム書式指定子も使用します。
Console.WriteLine("Formatting:");
TimeSpan ts1 = TimeSpan.Parse("0:0:3.6974974");
Console.WriteLine($"{ts1} ('FFFFFF') --> {ts1:FFFFFF}");
TimeSpan ts2 = TimeSpan.Parse("0:0:3.8000009");
Console.WriteLine($"{ts2} ('ss\\.FFFFFF') --> {ts2:ss\\.FFFFFF}");
Console.WriteLine();
Console.WriteLine("Parsing:");
string[] inputs = { "0:0:03.", "0:0:03.12", "0:0:03.1279569" };
string fmt = @"h\:m\:ss\.FFFFFF";
TimeSpan ts3;
foreach (string input in inputs) {
if (TimeSpan.TryParseExact(input, fmt, null, out ts3))
Console.WriteLine($"{input} ('{fmt}') --> {ts3}");
else
Console.WriteLine($"Cannot parse {input} with '{fmt}'.");
}
// The example displays the following output:
// Formatting:
// 00:00:03.6974974 ('FFFFFF') --> 697497
// 00:00:03.8000009 ('ss\.FFFFFF') --> 03.8
//
// Parsing:
// 0:0:03. ('h\:m\:ss\.FFFFFF') --> 00:00:03
// 0:0:03.12 ('h\:m\:ss\.FFFFFF') --> 00:00:03.1200000
// Cannot parse 0:0:03.1279569 with 'h\:m\:ss\.FFFFFF'.
Console.WriteLine("Formatting:")
Dim ts1 As TimeSpan = TimeSpan.Parse("0:0:3.6974974")
Console.WriteLine("{0} ('FFFFFF') --> {0:FFFFFF}", ts1)
Dim ts2 As TimeSpan = TimeSpan.Parse("0:0:3.8000009")
Console.WriteLine("{0} ('ss\.FFFFFF') --> {0:ss\.FFFFFF}", ts2)
Console.WriteLine()
Console.WriteLine("Parsing:")
Dim inputs() As String = {"0:0:03.", "0:0:03.12", "0:0:03.1279569"}
Dim fmt As String = "h\:m\:ss\.FFFFFF"
Dim ts3 As TimeSpan
For Each input As String In inputs
If TimeSpan.TryParseExact(input, fmt, Nothing, ts3)
Console.WriteLine("{0} ('{1}') --> {2}", input, fmt, ts3)
Else
Console.WriteLine("Cannot parse {0} with '{1}'.",
input, fmt)
End If
Next
' The example displays the following output:
' Formatting:
' 00:00:03.6974974 ('FFFFFF') --> 697497
' 00:00:03.8000009 ('ss\.FFFFFF') --> 03.8
'
' Parsing:
' 0:0:03. ('h\:m\:ss\.FFFFFF') --> 00:00:03
' 0:0:03.12 ('h\:m\:ss\.FFFFFF') --> 00:00:03.1200000
' Cannot parse 0:0:03.1279569 with 'h\:m\:ss\.FFFFFF'.
"FFFFFFF" カスタム書式指定子
"FFFFFFF" カスタム書式指定子 (7 文字の "F" 文字) は、時間間隔で 1000 万分の 1 秒 (またはティックの小数部) を出力します。 末尾に小数部のゼロがある場合、結果文字列には含まれません。 TimeSpan.ParseExact メソッドまたは TimeSpan.TryParseExact メソッドを呼び出す解析操作では、入力文字列に 7 桁の小数部が存在するかどうかは省略可能です。
次の例では、"FFFFFFF" カスタム書式指定子を使用して、秒の小数部を TimeSpan 値で表示します。 また、解析操作でこのカスタム書式指定子も使用します。
Console.WriteLine("Formatting:");
TimeSpan ts1 = TimeSpan.Parse("0:0:3.6974974");
Console.WriteLine($"{ts1} ('FFFFFFF') --> {ts1:FFFFFFF}");
TimeSpan ts2 = TimeSpan.Parse("0:0:3.9500000");
Console.WriteLine($"{ts2} ('ss\\.FFFFFFF') --> {ts2:ss\\.FFFFFFF}");
Console.WriteLine();
Console.WriteLine("Parsing:");
string[] inputs = { "0:0:03.", "0:0:03.12", "0:0:03.1279569" };
string fmt = @"h\:m\:ss\.FFFFFFF";
TimeSpan ts3;
foreach (string input in inputs) {
if (TimeSpan.TryParseExact(input, fmt, null, out ts3))
Console.WriteLine($"{input} ('{fmt}') --> {ts3}");
else
Console.WriteLine($"Cannot parse {input} with '{fmt}'.");
}
// The example displays the following output:
// Formatting:
// 00:00:03.6974974 ('FFFFFFF') --> 6974974
// 00:00:03.9500000 ('ss\.FFFFFFF') --> 03.95
//
// Parsing:
// 0:0:03. ('h\:m\:ss\.FFFFFFF') --> 00:00:03
// 0:0:03.12 ('h\:m\:ss\.FFFFFFF') --> 00:00:03.1200000
// 0:0:03.1279569 ('h\:m\:ss\.FFFFFFF') --> 00:00:03.1279569
Console.WriteLine("Formatting:")
Dim ts1 As TimeSpan = TimeSpan.Parse("0:0:3.6974974")
Console.WriteLine("{0} ('FFFFFFF') --> {0:FFFFFFF}", ts1)
Dim ts2 As TimeSpan = TimeSpan.Parse("0:0:3.9500000")
Console.WriteLine("{0} ('ss\.FFFFFFF') --> {0:ss\.FFFFFFF}", ts2)
Console.WriteLine()
Console.WriteLine("Parsing:")
Dim inputs() As String = {"0:0:03.", "0:0:03.12", "0:0:03.1279569"}
Dim fmt As String = "h\:m\:ss\.FFFFFFF"
Dim ts3 As TimeSpan
For Each input As String In inputs
If TimeSpan.TryParseExact(input, fmt, Nothing, ts3)
Console.WriteLine("{0} ('{1}') --> {2}", input, fmt, ts3)
Else
Console.WriteLine("Cannot parse {0} with '{1}'.",
input, fmt)
End If
Next
' The example displays the following output:
' Formatting:
' 00:00:03.6974974 ('FFFFFFF') --> 6974974
' 00:00:03.9500000 ('ss\.FFFFFFF') --> 03.95
'
' Parsing:
' 0:0:03. ('h\:m\:ss\.FFFFFFF') --> 00:00:03
' 0:0:03.12 ('h\:m\:ss\.FFFFFFF') --> 00:00:03.1200000
' 0:0:03.1279569 ('h\:m\:ss\.FFFFFFF') --> 00:00:03.1279569
その他の文字
空白文字を含む書式指定文字列内の他のエスケープされていない文字は、カスタム書式指定子として解釈されます。 ほとんどの場合、他のエスケープされていない文字が存在すると、FormatExceptionになります。
書式指定文字列にリテラル文字を含めるには、次の 2 つの方法があります。
単一引用符 (リテラル文字列区切り記号) で囲みます。
その前に円記号 ("\") を付けます。これはエスケープ文字として解釈されます。 つまり、C# では、書式指定文字列を @引用符で囲むか、リテラル文字の前に追加の円記号を付ける必要があります。
場合によっては、条件付きロジックを使用して、エスケープされたリテラルを書式指定文字列に含める必要があります。 次の例では、条件付きロジックを使用して、負の時間間隔の符号記号を含めます。
using System; public class Example { public static void Main() { TimeSpan result = new DateTime(2010, 01, 01) - DateTime.Now; String fmt = (result < TimeSpan.Zero ? "\\-" : "") + "dd\\.hh\\:mm"; Console.WriteLine(result.ToString(fmt)); Console.WriteLine($"Interval: {result:" + fmt + "}"); } } // The example displays output like the following: // -1291.10:54 // Interval: -1291.10:54
Module Example Public Sub Main() Dim result As TimeSpan = New DateTime(2010, 01, 01) - Date.Now Dim fmt As String = If(result < TimeSpan.Zero, "\-", "") + "dd\.hh\:mm" Console.WriteLine(result.ToString(fmt)) Console.WriteLine("Interval: {0:" + fmt + "}", result) End Sub End Module ' The example displays output like the following: ' -1291.10:54 ' Interval: -1291.10:54
.NET では、時間間隔内の区切り記号の文法は定義されていません。 つまり、日と時間、時間と分、分と秒、秒と分数の区切り記号はすべて、書式指定文字列の文字リテラルとして扱う必要があります。
次の例では、エスケープ文字と単一引用符の両方を使用して、出力文字列に "minutes" という単語を含むカスタム書式指定文字列を定義します。
TimeSpan interval = new TimeSpan(0, 32, 45);
// Escape literal characters in a format string.
string fmt = @"mm\:ss\ \m\i\n\u\t\e\s";
Console.WriteLine(interval.ToString(fmt));
// Delimit literal characters in a format string with the ' symbol.
fmt = "mm':'ss' minutes'";
Console.WriteLine(interval.ToString(fmt));
// The example displays the following output:
// 32:45 minutes
// 32:45 minutes
Dim interval As New TimeSpan(0, 32, 45)
' Escape literal characters in a format string.
Dim fmt As String = "mm\:ss\ \m\i\n\u\t\e\s"
Console.WriteLine(interval.ToString(fmt))
' Delimit literal characters in a format string with the ' symbol.
fmt = "mm':'ss' minutes'"
Console.WriteLine(interval.ToString(fmt))
' The example displays the following output:
' 32:45 minutes
' 32:45 minutes
こちらもご覧ください
.NET