標準 TimeSpan 書式指定文字列
標準 TimeSpan 書式指定文字列では、単一の書式指定子を使用して、書式設定操作の結果として得 TimeSpan 値のテキスト表現を定義します。 空白を含む複数の文字を含む書式指定文字列は、カスタム TimeSpan 書式指定文字列として解釈されます。 詳細については、「カスタム 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 = "Time of Travel: " + duration.ToString("c");
Console.WriteLine(output);
Console.WriteLine($"Time of Travel: {duration:c}");
}
}
// The example displays the following output:
// Time of Travel: 1.12:24:02
// Time of Travel: 1.12:24:02
Module Example
Public Sub Main()
Dim duration As New TimeSpan(1, 12, 23, 62)
Dim output As String = "Time of Travel: " + duration.ToString("c")
Console.WriteLine(output)
Console.WriteLine("Time of Travel: {0:c}", duration)
End Sub
End Module
' The example displays the following output:
' Time of Travel: 1.12:24:02
' Time of Travel: 1.12:24:02
標準 TimeSpan 書式指定文字列は、解析操作に必要な入力文字列の形式を定義するために、TimeSpan.ParseExact および TimeSpan.TryParseExact メソッドでも使用されます。 (解析では、値の文字列形式をその値に変換します)。次の例は、解析操作での標準書式指定文字列の使用を示しています。
using System;
public class Example
{
public static void Main()
{
string value = "1.03:14:56.1667";
TimeSpan interval;
try {
interval = TimeSpan.ParseExact(value, "c", null);
Console.WriteLine($"Converted '{value}' to {interval}");
}
catch (FormatException) {
Console.WriteLine($"{value}: Bad Format");
}
catch (OverflowException) {
Console.WriteLine($"{value}: Out of Range");
}
if (TimeSpan.TryParseExact(value, "c", null, out interval))
Console.WriteLine($"Converted '{value}' to {interval}");
else
Console.WriteLine($"Unable to convert {value} to a time interval.");
}
}
// The example displays the following output:
// Converted '1.03:14:56.1667' to 1.03:14:56.1667000
// Converted '1.03:14:56.1667' to 1.03:14:56.1667000
Module Example
Public Sub Main()
Dim value As String = "1.03:14:56.1667"
Dim interval As TimeSpan
Try
interval = TimeSpan.ParseExact(value, "c", Nothing)
Console.WriteLine("Converted '{0}' to {1}", value, interval)
Catch e As FormatException
Console.WriteLine("{0}: Bad Format", value)
Catch e As OverflowException
Console.WriteLine("{0}: Out of Range", value)
End Try
If TimeSpan.TryParseExact(value, "c", Nothing, interval) Then
Console.WriteLine("Converted '{0}' to {1}", value, interval)
Else
Console.WriteLine("Unable to convert {0} to a time interval.",
value)
End If
End Sub
End Module
' The example displays the following output:
' Converted '1.03:14:56.1667' to 1.03:14:56.1667000
' Converted '1.03:14:56.1667' to 1.03:14:56.1667000
次の表に、標準の時間間隔書式指定子を示します。
書式指定子 | 名前 | 説明 | 例示 |
---|---|---|---|
"c" | 定数 (不変) 形式 | この指定子はカルチャに依存しません。
[-][d'.']hh':'mm':'ss['.'fffffff] の形式をとります。("t" および "T" 書式指定文字列は同じ結果を生成します。 詳細: 定数 ("c") 書式指定子 をします。 |
TimeSpan.Zero -> 00:00:00New TimeSpan(0, 0, 30, 0) -> 00:30:00New TimeSpan(3, 17, 25, 30, 500) -> 3.17:25:30.50000000 |
"g" | 一般的な短い形式 | この指定子は、必要なものだけを出力します。 これは、カルチャに依存し、[-][d':']h':'mm':'ss[.FFFFFFF] の形を取ります.詳細: 一般的な短い ("g") 書式指定子します。 |
New TimeSpan(1, 3, 16, 50, 500) -> 1:3:16:50.5 (en-US)New TimeSpan(1, 3, 16, 50, 500) -> 1:3:16:50,5 (fr-FR)New TimeSpan(1, 3, 16, 50, 599) -> 1:3:16:50.599 (en-US)New TimeSpan(1, 3, 16, 50, 599) -> 1:3:16:50,599 (fr-FR) |
"G" | 一般的な長い形式 | この指定子は、常に日と 7 桁の小数部を出力します。 これは、カルチャに依存し、[-]d':'hh':'mm':'ss.fffffff の形を取ります.詳細: 一般長 ("G") 書式指定子します。 |
New TimeSpan(18, 30, 0) -> 0:18:30:00.00000000 (en-US)New TimeSpan(18, 30, 0) -> 0:18:30:00,0000000 (fr-FR) |
定数 ("c") 書式指定子
"c" 書式指定子は、TimeSpan 値の文字列形式を次の形式で返します。
[-][d.]hh:mm:ss[.fffffff]
角かっこ ([ と ]) の要素は省略可能です。 ピリオド (.) とコロン (:)はリテラル記号です。 次の表では、残りの要素について説明します。
要素 | 説明 |
---|---|
- | 省略可能な負の符号。負の時間間隔を示します。 |
d | 省略可能な日数。先頭にゼロはありません。 |
はあ | 時間数。範囲は "00" から "23" です。 |
mm | 分数。範囲は "00" から "59" です。 |
ss | 秒数。範囲は "0" から "59" です。 |
fffffff を する | 秒の省略可能な小数部。 その値の範囲は、"0000001" (1 ティック、または 1 秒の 1000 万分の 1) から "9999999" (9,999,999 1000 万分の 1 秒、または 1 秒未満のティック) です。 |
"g" および "G" 書式指定子とは異なり、"c" 書式指定子はカルチャに依存しません。 不変であり、.NET Framework 4 より前のバージョンに共通する TimeSpan 値の文字列表現が生成されます。 "c" は既定の TimeSpan 書式指定文字列です。TimeSpan.ToString() メソッドは、"c" 書式指定文字列を使用して時間間隔の値を書式設定します。
注
TimeSpan では、"t" および "T" 標準書式指定文字列もサポートされています。これは、"c" 標準書式指定文字列と同じ動作です。
次の例では、2 つの TimeSpan オブジェクトをインスタンス化し、それらを使用して算術演算を実行し、結果を表示します。 いずれの場合も、複合書式指定を使用して、"c" 書式指定子を使用して TimeSpan 値を表示します。
using System;
public class Example
{
public static void Main()
{
TimeSpan interval1, interval2;
interval1 = new TimeSpan(7, 45, 16);
interval2 = new TimeSpan(18, 12, 38);
Console.WriteLine($"{interval1:c} - {interval2:c} = {interval1 - interval2:c}");
Console.WriteLine($"{interval1:c} + {interval2:c} = {interval1 + interval2:c}");
interval1 = new TimeSpan(0, 0, 1, 14, 365);
interval2 = TimeSpan.FromTicks(2143756);
Console.WriteLine($"{interval1:c} + {interval2:c} = {interval1 + interval2:c}");
}
}
// The example displays the following output:
// 07:45:16 - 18:12:38 = -10:27:22
// 07:45:16 + 18:12:38 = 1.01:57:54
// 00:01:14.3650000 + 00:00:00.2143756 = 00:01:14.5793756
Module Example
Public Sub Main()
Dim interval1, interval2 As TimeSpan
interval1 = New TimeSpan(7, 45, 16)
interval2 = New TimeSpan(18, 12, 38)
Console.WriteLine("{0:c} - {1:c} = {2:c}", interval1,
interval2, interval1 - interval2)
Console.WriteLine("{0:c} + {1:c} = {2:c}", interval1,
interval2, interval1 + interval2)
interval1 = New TimeSpan(0, 0, 1, 14, 365)
interval2 = TimeSpan.FromTicks(2143756)
Console.WriteLine("{0:c} + {1:c} = {2:c}", interval1,
interval2, interval1 + interval2)
End Sub
End Module
' The example displays the following output:
' 07:45:16 - 18:12:38 = -10:27:22
' 07:45:16 + 18:12:38 = 1.01:57:54
' 00:01:14.3650000 + 00:00:00.2143756 = 00:01:14.5793756
一般的な短い ("g") 書式指定子
"g" TimeSpan 書式指定子は、必要な要素のみを含めることで、TimeSpan 値の文字列形式をコンパクトな形式で返します。 次の形式があります。
[-][d:]h:mm:ss[.FFFFFFF]
角かっこ ([ と ]) の要素は省略可能です。 コロン (:)はリテラル記号です。 次の表では、残りの要素について説明します。
要素 | 説明 |
---|---|
- | 省略可能な負の符号。負の時間間隔を示します。 |
d | 省略可能な日数。先頭にゼロはありません。 |
時 | 時間数。"0" から "23" の範囲で、先頭にゼロはありません。 |
mm | 分数。範囲は "00" から "59" です。 |
ss | 秒数。範囲は "00" から "59" です。 |
. | 秒の小数部区切り記号。 これは、指定したカルチャの NumberDecimalSeparator プロパティに相当し、ユーザーのオーバーライドはありません。 |
FFFFFFF を する | 秒の小数部。 可能な限り少ない数字が表示されます。 |
"G" 書式指定子と同様に、"g" 書式指定子はローカライズされます。 秒の小数部の区切り記号は、現在のカルチャまたは指定したカルチャの NumberDecimalSeparator プロパティに基づいています。
次の例では、2 つの TimeSpan オブジェクトをインスタンス化し、それらを使用して算術演算を実行し、結果を表示します。 いずれの場合も、複合書式指定を使用して、"g" 書式指定子を使用して TimeSpan 値を表示します。 さらに、現在のシステム カルチャ (この場合は英語 - 米国または en-US) とフランス語 - フランス (fr-FR) カルチャの書式設定規則を使用して、TimeSpan 値を書式設定します。
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
TimeSpan interval1, interval2;
interval1 = new TimeSpan(7, 45, 16);
interval2 = new TimeSpan(18, 12, 38);
Console.WriteLine($"{interval1:g} - {interval2:g} = {interval1 - interval2:g}");
Console.WriteLine(String.Format(new CultureInfo("fr-FR"),
"{0:g} + {1:g} = {2:g}", interval1,
interval2, interval1 + interval2));
interval1 = new TimeSpan(0, 0, 1, 14, 36);
interval2 = TimeSpan.FromTicks(2143756);
Console.WriteLine($"{interval1:g} + {interval2:g} = {interval1 + interval2:g}");
}
}
// The example displays the following output:
// 7:45:16 - 18:12:38 = -10:27:22
// 7:45:16 + 18:12:38 = 1:1:57:54
// 0:01:14.036 + 0:00:00.2143756 = 0:01:14.2503756
Imports System.Globalization
Module Example
Public Sub Main()
Dim interval1, interval2 As TimeSpan
interval1 = New TimeSpan(7, 45, 16)
interval2 = New TimeSpan(18, 12, 38)
Console.WriteLine("{0:g} - {1:g} = {2:g}", interval1,
interval2, interval1 - interval2)
Console.WriteLine(String.Format(New CultureInfo("fr-FR"),
"{0:g} + {1:g} = {2:g}", interval1,
interval2, interval1 + interval2))
interval1 = New TimeSpan(0, 0, 1, 14, 36)
interval2 = TimeSpan.FromTicks(2143756)
Console.WriteLine("{0:g} + {1:g} = {2:g}", interval1,
interval2, interval1 + interval2)
End Sub
End Module
' The example displays the following output:
' 7:45:16 - 18:12:38 = -10:27:22
' 7:45:16 + 18:12:38 = 1:1:57:54
' 0:01:14.036 + 0:00:00.2143756 = 0:01:14.2503756
一般長 ("G") 書式指定子
"G" TimeSpan 書式指定子は、常に日数と秒の小数部の両方を含む長い形式の TimeSpan 値の文字列形式を返します。 "G" 標準書式指定子の結果の文字列の形式は次のとおりです。
[-]d:hh:mm:ss.fffffff
角かっこ ([ と ]) の要素は省略可能です。 コロン (:)はリテラル記号です。 次の表では、残りの要素について説明します。
要素 | 説明 |
---|---|
- | 省略可能な負の符号。負の時間間隔を示します。 |
d | 先頭にゼロがない日数。 |
はあ | 時間数。範囲は "00" から "23" です。 |
mm | 分数。範囲は "00" から "59" です。 |
ss | 秒数。範囲は "00" から "59" です。 |
. | 秒の小数部区切り記号。 これは、指定したカルチャの NumberDecimalSeparator プロパティに相当し、ユーザーのオーバーライドはありません。 |
fffffff を する | 秒の小数部。 |
"G" 書式指定子と同様に、"g" 書式指定子はローカライズされます。 秒の小数部の区切り記号は、現在のカルチャまたは指定したカルチャの NumberDecimalSeparator プロパティに基づいています。
次の例では、2 つの TimeSpan オブジェクトをインスタンス化し、それらを使用して算術演算を実行し、結果を表示します。 いずれの場合も、複合書式指定を使用して、"G" 書式指定子を使用して TimeSpan 値を表示します。 さらに、現在のシステム カルチャ (この場合は英語 - 米国または en-US) とフランス語 - フランス (fr-FR) カルチャの書式設定規則を使用して、TimeSpan 値を書式設定します。
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
TimeSpan interval1, interval2;
interval1 = new TimeSpan(7, 45, 16);
interval2 = new TimeSpan(18, 12, 38);
Console.WriteLine($"{interval1:G} - {interval2:G} = {interval1 - interval2:G}");
Console.WriteLine(String.Format(new CultureInfo("fr-FR"),
"{0:G} + {1:G} = {2:G}", interval1,
interval2, interval1 + interval2));
interval1 = new TimeSpan(0, 0, 1, 14, 36);
interval2 = TimeSpan.FromTicks(2143756);
Console.WriteLine($"{interval1:G} + {interval2:G} = {interval1 + interval2:G}");
}
}
// The example displays the following output:
// 0:07:45:16.0000000 - 0:18:12:38.0000000 = -0:10:27:22.0000000
// 0:07:45:16,0000000 + 0:18:12:38,0000000 = 1:01:57:54,0000000
// 0:00:01:14.0360000 + 0:00:00:00.2143756 = 0:00:01:14.2503756
Imports System.Globalization
Module Example
Public Sub Main()
Dim interval1, interval2 As TimeSpan
interval1 = New TimeSpan(7, 45, 16)
interval2 = New TimeSpan(18, 12, 38)
Console.WriteLine("{0:G} - {1:G} = {2:G}", interval1,
interval2, interval1 - interval2)
Console.WriteLine(String.Format(New CultureInfo("fr-FR"),
"{0:G} + {1:G} = {2:G}", interval1,
interval2, interval1 + interval2))
interval1 = New TimeSpan(0, 0, 1, 14, 36)
interval2 = TimeSpan.FromTicks(2143756)
Console.WriteLine("{0:G} + {1:G} = {2:G}", interval1,
interval2, interval1 + interval2)
End Sub
End Module
' The example displays the following output:
' 0:07:45:16.0000000 - 0:18:12:38.0000000 = -0:10:27:22.0000000
' 0:07:45:16,0000000 + 0:18:12:38,0000000 = 1:01:57:54,0000000
' 0:00:01:14.0360000 + 0:00:00:00.2143756 = 0:00:01:14.2503756
こちらもご覧ください
.NET