c#では、12:45:10の124510のような形式hhmmssの時間があり、TotalSecondsを知る必要があります。 TimeSpan.Parse( "12:45:10")。ToTalSecondsを使用しましたが、hhmmssの形式を取りません。これを変換する良い方法はありますか?
これは役立つかもしれません
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を使用する必要があります。
文字列をDateTime値に解析し、そのDate値を減算して、時間をTimeSpanとして取得します。
DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
受信時間の形式を決定し、それを一貫した形式に変換する必要があります。
次に、次のコードを使用できます。
形式: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として認識されませんでした。"
コロン(または他の区切り文字)をエスケープする必要があります。どのような理由でコロンを処理できないのか、わかりません。 MSDNの Custom TimeSpan Format Strings 、およびJonから TimeSpan.ParseExactが機能しない理由 への受け入れられた回答を参照してください。
文字列が常にhhmmssになることを保証できる場合は、次のようにすることができます。
TimeSpan.Parse(
timeString.SubString(0, 2) + ":" +
timeString.Substring(2, 2) + ":" +
timeString.Substring(4, 2)))