web-dev-qa-db-ja.com

TimeSpan.Parse時間形式hhmmss

c#では、12:45:10の124510のような形式hhmmssの時間があり、TotalSecondsを知る必要があります。 TimeSpan.Parse( "12:45:10")。ToTalSecondsを使用しましたが、hhmmssの形式を取りません。これを変換する良い方法はありますか?

14
Julien Daniel

これは役立つかもしれません

using System;
using System.Globalization;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime d = DateTime.ParseExact("124510", "hhmmss", CultureInfo.InvariantCulture);

            Console.WriteLine("Total Seconds: " + d.TimeOfDay.TotalSeconds);

            Console.ReadLine();
        }
    }
}

これは24HR時間を処理しないことに注意してください。24HR形式で時間を解析するには、パターンHHmmssを使用する必要があります。

24
user156862

文字列をDateTime値に解析し、そのDate値を減算して、時間をTimeSpanとして取得します。

DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
10
Guffa

受信時間の形式を決定し、それを一貫した形式に変換する必要があります。

次に、次のコードを使用できます。

形式:hh:mm:ss(12時間形式)

DateTime dt = DateTime.ParseExact("10:45:10", "hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
double totalSeconds = dt.TimeOfDay.TotalSeconds;    // Output: 38170.0

形式:HH:mm:ss(24時間形式)

DateTime dt = DateTime.ParseExact("22:45:10", "HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
double totalSeconds = dt.TimeOfDay.TotalSeconds;    // Output: 81910.0

形式が一致しない場合、FormatExceptionがメッセージとともにスローされます: "文字列は有効なDateTimeとして認識されませんでした。"

5
Chirag

コロン(または他の区切り文字)をエスケープする必要があります。どのような理由でコロンを処理できないのか、わかりません。 MSDNの Custom TimeSpan Format Strings 、およびJonから TimeSpan.ParseExactが機能しない理由 への受け入れられた回答を参照してください。

3
ProfK

文字列が常にhhmmssになることを保証できる場合は、次のようにすることができます。

TimeSpan.Parse(
    timeString.SubString(0, 2) + ":" + 
    timeString.Substring(2, 2) + ":" + 
    timeString.Substring(4, 2)))
0
Jeff Yates