在c#中我有时间格式hhmmss,如124510 12:45:10,我需要知道TotalSeconds。我使用了TimeSpan.Parse(“12:45:10”)。ToTalSeconds但它不采用格式hhmmss。转换它的任何好方法?
答案 0 :(得分:24)
这可能会有所帮助
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 模式。
答案 1 :(得分:9)
将字符串解析为DateTime值,然后减去它的Date值以获得TimeSpan的时间:
DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
答案 2 :(得分:4)
您必须决定接收时间格式并将其转换为任何一致的格式。
然后,您可以使用以下代码:
格式: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。”
答案 3 :(得分:3)
你需要逃避冒号(或其他分隔符),因为它无法处理它们,我不知道。请参阅MSDN上的Custom TimeSpan Format Strings和已接受的答案,从Jon到Why does TimeSpan.ParseExact not work。
答案 4 :(得分:0)
如果你能保证字符串永远是hhmmss,你可以这样做:
TimeSpan.Parse(
timeString.SubString(0, 2) + ":" +
timeString.Substring(2, 2) + ":" +
timeString.Substring(4, 2)))
答案 5 :(得分:0)
如果您还希望以毫秒为单位使用这种格式“ 01:02:10.055”,则可以执行以下操作;
public static double ParseTheTime(string givenTime)
{
var time = DateTime.ParseExact(givenTime, "hh:mm:ss.fff", CultureInfo.InvariantCulture);
return time.TimeOfDay.TotalSeconds;
}
此代码将为您提供相应的秒数。 请注意,如果要调整精度点,可以增加'f'的数量。