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

C#负TimeSpan转换为保留符号Double类型的实现问题问询

问题解决方案

现有代码存在的问题

  • 负的TimeSpan转换为字符串后,仅小时部分携带负号,分钟部分为正数,直接拆分相加会丢失符号,比如-15分钟会被错误计算为0 + 15/60 = 0.25,完全不符合带负号输出的需求
  • 手动拆分字符串做转换的方式冗余,且如果时间差跨天,TimeSpan字符串会携带天数字段,拆分后格式不匹配会直接报错

最优实现方案

直接使用TimeSpan自带的TotalHours属性,该属性原生返回带正负的双精度值,对应两个时间差的总小时数,完全匹配需求,无需自行做字符串拆分转换,可规避所有格式相关的bug。

修正后代码如下:

string date1 = "7:00 AM";
string date2 = "7:15 AM";
DateTime newdate1 = DateTime.Parse(date1);
DateTime newdate2 = DateTime.Parse(date2);
TimeSpan late = newdate1 - newdate2;
// 直接获取带符号的总小时数
double totalHours = late.TotalHours;
if (totalHours <= 0)
{
    Console.Write(totalHours);
}
else
{
    Console.Write("You didn't make it!!!");
}

效果验证

  • 示例中7:00 AM减7:15 AM得到的结果为-0.25,符合负号输出要求
  • 如果date1为7:30 AM,date2为7:15 AM,得到的结果为0.25,符合正值输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:06:06