在 c# 中,我有时间在 12:45:10 的格式 hhmmss 中,例如 124510,我需要知道 TotalSeconds。我使用了 TimeSpan.Parse("12:45:10").ToTalSeconds 但它不采用 hhmmss 格式。有什么好方法可以转换吗?
问问题
49204 次
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();
}
}
}
请注意,这不会处理 24HR 时间,要以 24HR 格式解析时间,您应该使用模式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
如果格式不匹配,将抛出 FormatException 并显示消息:“字符串未被识别为有效的日期时间。 ”
于 2014-12-18T05:59:23.173 回答
3
您需要转义冒号(或其他分隔符),我不知道为什么它无法处理它们。请参阅MSDN 上的自定义 TimeSpan 格式字符串,以及 Jon 对Why does TimeSpan.ParseExact not work的接受答案。
于 2013-04-28T11:51:42.437 回答
1
如果您还想使用这种格式“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”的数量。
于 2020-10-21T11:16:51.273 回答
0
如果您可以保证字符串始终为 hhmmss,您可以执行以下操作:
TimeSpan.Parse(
timeString.SubString(0, 2) + ":" +
timeString.Substring(2, 2) + ":" +
timeString.Substring(4, 2)))
于 2009-12-02T16:01:39.977 回答