в С# я есть время в формате hhmmss, например 124510, за 12:45:10, и мне нужно знать TotalSeconds. Я использовал TimeSpan.Parse( "12:45:10" ). ToTalSeconds, но он не принимает формат hhmmss. Любой хороший способ конвертировать это?
TimeSpan.Parse формат времени hhmmss
Ответ 1
Это может помочь
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.
Ответ 2
Разделите строку на значение DateTime, а затем вычтите значение Date, чтобы получить время как TimeSpan:
DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
Ответ 3
Вы должны выбрать формат времени приема и преобразовать его в любой согласованный формат.
Затем вы можете использовать следующий код:
Формат: 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."
Ответ 4
Вам нужно избегать двоеточий (или других разделителей), по какой причине он не может справиться с ними, я не знаю. См. Пользовательские строки формата TimeSpan на MSDN, а принятый ответ от Jon, до Почему TimeSpan.ParseExact не работает.
Ответ 5
Если вы можете гарантировать, что строка всегда будет hhmmss, вы можете сделать что-то вроде:
TimeSpan.Parse(
timeString.SubString(0, 2) + ":" +
timeString.Substring(2, 2) + ":" +
timeString.Substring(4, 2)))