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

使用TimeOnly结构体与DateTime进行日期时间计算的相关问询

结论

你提供的运算代码无法直接通过编译,.NET 没有为DateTime和TimeOnly类型定义原生的加减运算符重载,该写法本身不符合两个类型的语义设计。

原因说明

TimeOnly的定位是表示「一天内的某个时间点」,和代表「时间长度」的TimeSpan语义完全不同,因此不能直接和代表「完整时间点」的DateTime做算术运算。

如果你要实现「去掉DateTime的时间部分,拿到当日零点的DateTime」的需求,有两种合法的实现方案:

  • 直接调用DateTime的Date属性,不需要额外运算:
    DateTime result = DateTime.Parse("2021-01-01 10:00").Date;
    // 结果为 2021-01-01 00:00:00,符合你的预期
    
  • 先将TimeOnly转换为TimeSpan类型再做减法:
    DateTime originalDt = DateTime.Parse("2021-01-01 10:00");
    TimeOnly timeToSubtract = TimeOnly.Parse("10:00");
    DateTime result = originalDt - timeToSubtract.ToTimeSpan();
    // 结果和直接调用Date属性一致
    

拓展场景

如果你的需求是替换DateTime的时间部分为指定的TimeOnly值,可以用如下写法:

DateTime originalDt = DateTime.Parse("2021-01-01 10:00");
TimeOnly targetTime = TimeOnly.Parse("16:30");
DateTime result = DateOnly.FromDateTime(originalDt).ToDateTime(targetTime);
// 结果为 2021-01-01 16:30:00

内容的提问来源于stack exchange,提问作者ˈvɔlə

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:09:02