c# - 如何在 C# 中处理带有持续时间的实际时间?

标签 c# .net datetime time date-math

将完整的 DateTime 实例与表示一天中的实际时间 的小时、分钟和秒进行比较的首选方法是什么?三胞胎(例如添加小时,分钟秒..)?


我目前的做法是类似

DateTime startHour = new DateTime(1900,1,1,12,25,43);
DateTime endHour = new DateTime(1900,1,1,13,45,32);

// I need to, say, know if a complete DateTime instance 
// is later than startHour plus 15 minutes

DateTime now = DateTime.Now();

startHour = startHour.addMinutes(15);

if (now.CompareTo(new DateTime(now.Year, now.Month, now.Day, startHour.Hour, 
                    startHour.Minute, startHour.Second)) > 0) 
{
    //I can do something now
}

这非常麻烦,甚至容易失败。据我所知,TimeSpan 不是解决方案,因为它们代表跨度并且不受 24 小时限制的约束(56 小时 34 分钟的 TimeSpan 是有效。)

此类计算的首选方法是什么?

最佳答案

“大于 startHour”是什么意思一点都不清楚......但是采取

TimeSpan startHour = new TimeSpan(12, 25, 43);
if (endHour.TimeOfDay > startHour)
{
    ...
}

... 工作起来非常简单。

一定要添加参数检查以确保您没有为 startHour 指定值 < 0 或 > 23 小时,但这一切都非常简单。

.NET 的日期和时间 API 与 Joda Time 等相比非常原始(即使在 3.5 中也是如此)——但在这种特殊情况下,我认为它还不错。

关于c# - 如何在 C# 中处理带有持续时间的实际时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408165/

相关文章:

c# - 急切地处理 ManualResetEvent

c# - ListView 拖放时未更新

c# - 使用数据库中的值加载 DataGridView 中的指定列

c# - 自定义验证器并指定消息类型

python - Pandas Python 中的数据框读取和日期格式化

python - 我有一个长字符串,其中包含多种格式的日期(dd-mm-yyyy、mm-dd-yyyy 等)。如何将它们全部转换为相同的格式?

c# 将行添加到数据网格组合框

c# - [Serializable] 属性有哪些 ISerializable 没有的功能?

c# - 为 IQueryable<T> 生成表达式

.net - 谁能帮我获取 math.round() 以获得以下输出