You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将字符串"7.30"转换为hh:mm时间格式 实现在C#中计算两个时间差

C# 中"7.30"类时间字符串转换与时间差计算实现方案

注意:所有代码需要提前引入命名空间 using System.Globalization;

1. 格式适配说明

"7.30"这类字符串默认表示「小时.分钟」的时间格式,没有绑定日期的场景下优先用TimeSpan类型存储,需要关联具体日期的场景再适配为DateTime类型。由于默认的Parse方法不识别.作为时分分隔符,必须指定格式用精确解析方法实现转换。

2. 字符串转TimeSpan实现

使用TimeSpan.TryParseExact指定匹配格式,避免格式不匹配抛出异常:

string timeStr = "7.30";
// 格式说明:h匹配1-2位小时,\.转义匹配字面量点,mm匹配两位分钟
bool parseSuccess = TimeSpan.TryParseExact(timeStr, @"h\.mm", CultureInfo.InvariantCulture, out TimeSpan timeResult);
if (parseSuccess)
{
    // 转换成功输出 07:30:00
    Console.WriteLine(timeResult);
}

如果字符串带秒数(比如"7.30.15"表示7点30分15秒),把格式修改为@"h\.mm\.ss"即可。

3. 字符串转DateTime实现

如果需要绑定具体日期,可以按以下方式转换:

string timeStr = "7.30";
bool parseSuccess = DateTime.TryParseExact(timeStr, "H.mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateResult);
if (parseSuccess)
{
    // 转换默认生成当年当月1日的时间,可手动替换为当天日期
    dateResult = DateTime.Today.Add(dateResult.TimeOfDay);
    // 输出示例:2024/5/20 7:30:00
    Console.WriteLine(dateResult);
}

4. 两个时间差值计算

无论是TimeSpan还是DateTime类型,直接做减法即可得到时间差,结果为TimeSpan类型:

string timeStr1 = "7.30";
string timeStr2 = "18.45";

TimeSpan.TryParseExact(timeStr1, @"h\.mm", CultureInfo.InvariantCulture, out TimeSpan t1);
TimeSpan.TryParseExact(timeStr2, @"h\.mm", CultureInfo.InvariantCulture, out TimeSpan t2);

TimeSpan diff = t2 - t1;
// 按需读取差值属性,示例输出:时间差:11.25小时,即11小时15分钟
Console.WriteLine($"时间差:{diff.TotalHours}小时,即{diff.Hours}小时{diff.Minutes}分钟");

注意事项

  • 格式字符串中的.必须加转义符\,否则会被识别为格式控制符而非字面量的点
  • 如果是12小时制带AM/PM的格式,把格式符修改为h\.mm tt,传入对应区域的CultureInfo即可正常解析
  • 生产环境建议统一使用TryParseExact系列方法,不要直接用Parse避免非法输入抛出异常

内容的提问来源于stack exchange,提问作者lahiru sathish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 01:54:03