Vin*_*vic 5 .net c# time datetime date-math
我目前的做法是这样的
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
}
Run Code Online (Sandbox Code Playgroud)
这非常麻烦甚至容易出错.就我所见,TimeSpans不是解决方案,因为它们代表跨度并且不受24小时限制的约束(TimeSpan为56小时34分钟有效.)
这种计算的首选方法是什么?
我错过了什么?
编辑:我正在进行的计算是比较完整的DateTime实例与表示实际时间的小时,分钟,秒三元组以及操作这些三元组的方法(添加小时,分钟秒)的方法.
编辑2:谢谢大家,我认为我现在掌握了DateTime API的要点.:)我唯一想念的是一种指定TimeSpan的方法,该TimeSpan应仅代表TimeOfDay,但这是次要的.
Jon*_*eet 11
你完全不清楚"大于startHour"是什么意思......但是服用
TimeSpan startHour = new TimeSpan(12, 25, 43);
if (endHour.TimeOfDay > startHour)
{
...
}
Run Code Online (Sandbox Code Playgroud)
......工作非常简单.
通过各种方式添加参数检查以确保您没有为startHour指定<0或>23小时的值,但这一切都非常简单.
与Joda Time相比,.NET的日期和时间API相当原始(即使在3.5) - 但在这种特殊情况下,我认为它并不太糟糕.
| 归档时间: |
|
| 查看次数: |
5070 次 |
| 最近记录: |