20

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

4

6 に答える 6

33

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

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();
        }
    }
}

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

于 2009-12-02T16:13:28.747 に答える
12

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

DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
于 2009-12-02T16:02:18.260 に答える
6

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

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

形式: 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

フォーマットが一致しない場合、「文字列は有効な DateTime として認識されませんでした。」というメッセージとともに FormatException がスローされます。

于 2014-12-18T05:59:23.173 に答える
0

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

TimeSpan.Parse(
    timeString.SubString(0, 2) + ":" + 
    timeString.Substring(2, 2) + ":" + 
    timeString.Substring(4, 2)))
于 2009-12-02T16:01:39.977 に答える