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

C#中如何获取两个DateTimeOffset忽略日期差异的仅时间差

C# 计算两个DateTimeOffset的时分秒差值(忽略年月日)

实现核心逻辑是通过TimeOfDay属性提取DateTimeOffset的时分秒部分,再对两个时分秒的时间跨度做差值计算:

基础实现(适配示例场景)

你给出的示例中,起始时间时分秒为13:30:00,结束时间时分秒为13:45:00,忽略年月日差后预期得到15分钟差值,代码示例如下:

// 定义两个测试用DateTimeOffset
DateTimeOffset startDate = DateTimeOffset.Parse("2021-08-28T13:30:00+00:00");
DateTimeOffset endDate = DateTimeOffset.Parse("2021-08-30T13:45:00+00:00");
// 提取时分秒部分计算差值
TimeSpan timeDifference = endDate.TimeOfDay - startDate.TimeOfDay;
// 获取无符号的差值结果
TimeSpan absoluteDifference = timeDifference.Duration();
// 输出测试:结果为00:15:00,即15分钟
Console.WriteLine(absoluteDifference);

补充场景:跨午夜最小差值计算

如果业务需要统计两个时间的最小间隔(比如23:50和次日00:10的最小差为20分钟,而非23小时40分钟),可以额外加一层判断:

TimeSpan minTimeDifference = absoluteDifference > TimeSpan.FromHours(12) 
    ? TimeSpan.FromHours(24) - absoluteDifference 
    : absoluteDifference;

关键API说明

  • DateTimeOffset.TimeOfDay:返回当前时间从零点开始的时分秒对应的TimeSpan对象,自动丢弃年、月、日信息
  • TimeSpan.Duration():返回当前TimeSpan的绝对值,避免结束时间时分秒小于起始时间时分秒时出现负数结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:48:03