質問
C#で、私は12時45分10秒のために124510のようなhhmmss形式で時間を持っていると私はTotalSecondsを知っておく必要があります。私はToTalSeconds。TimeSpan.Parse(「12時45分10秒」)を使用するが、それはhhmmss形式を取るdoes'nt。これを変換するために、任意の良い方法?
解決
これは役立つかもしれません。
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();
}
}
}
あなたはパターンの HHMMSS のを使用する必要があります24時間形式で時刻を解析するために、これは24HR時間を処理しません注意します。
他のヒント
、その後のTimeSpanとしての時間を得るためにそれの日付値を減算、DateTime値に文字列を解析します:
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として認識されませんされたの。"
あなたはそれがそれらを処理することはできませんどのような理由のために、コロン(またはその他の区切り)をエスケープする必要があり、私は知りません。 カスタムのTimeSpan書式指定文字列を参照してくださいのMSDN、および受け入れ答え、から上ジョン、TimeSpan.ParseExactはに動作しないのはなぜhref="https://stackoverflow.com/questions/11719055/why-does-timespan-parseexact-not-work">を
あなたは文字列は常になることHHMMSSを保証することができれば、あなたのような何かを行うことができます:
TimeSpan.Parse(
timeString.SubString(0, 2) + ":" +
timeString.Substring(2, 2) + ":" +
timeString.Substring(4, 2)))