Max*_*sky 80
使用C#非常容易.为了比较DateTimes,我们有一个名为TimeSpan的类.在这种情况下,TimeSpan结构将被定义为两个日期时间之间的差异.
假设您的DateTimes称为开始和结束.
DateTime start = new DateTime(2009, 6, 14);
DateTime end = new DateTime(2009, 12, 14);
Run Code Online (Sandbox Code Playgroud)
我们已将日期时间设定为2009年6月14日和2009年12月14日.
现在,让我们找到两者之间的区别.为此,我们创建了一个TimeSpan:
TimeSpan difference = end - start;
Run Code Online (Sandbox Code Playgroud)
使用此TimeSpan对象,您可以通过多种不同方式表达时间差异.但是,你特意要求天数的差异,所以这是你如何得到它:
Console.WriteLine("Difference in days: " + difference.Days);
Run Code Online (Sandbox Code Playgroud)
因此,该属性称为TimeSpan.Days.
//establish DateTimes
DateTime start = new DateTime(2009, 6, 14);
DateTime end = new DateTime(2009, 12, 14);
TimeSpan difference = end - start; //create TimeSpan object
Console.WriteLine("Difference in days: " + difference.Days); //Extract days, write to Console.
Run Code Online (Sandbox Code Playgroud)
有关使用TimeSpan结构的更多信息,请参阅此MSDN文档(尤其是C#示例).
希望我帮忙!
更新:一些答案建议在一步中进行减法,例如:
int days = (dt2 - dt1).Days;
Run Code Online (Sandbox Code Playgroud)
要么
int numDaysDiff = Math.Abs(date2.Subtract(date1).Days);
Run Code Online (Sandbox Code Playgroud)
但是,它们与我的答案相同,只是缩短了.这是因为DateTime.Subtract()方法和DateTimes的减法运算符返回TimeSpan,然后您可以从中访问天数.我在代码示例中专门使用了较长的方法,以便您清楚地了解 DateTime和TimeSpan对象之间的情况以及它们如何工作.当然,我刚刚提到的其他方法也很好.
更新#2:
之前曾问过一个非常类似的问题,可以在这里找到.然而,这个问题的要点是为什么代码样本(基本上等同于所有答案的代码样本)有时会提供一个休息日的答案.我认为这对这个问题也很重要.
作为另一个问题的主要答案建议,您可以使用此代码:
int days = (int)Math.Ceiling(difference.TotalDays);
Run Code Online (Sandbox Code Playgroud)
此代码使用Math.Ceiling,根据MSDN,它是:
返回大于或等于指定的双精度浮点数的最小整数值.
因此,我们现在遇到了如何计算日期的问题.你想把一天中的一部分(例如一天的.5)计算为:
以下是上述代码示例:
算作一整天(使用Math.Ceiling()来舍入):
//establish DateTimes
DateTime start = new DateTime(2009, 6, 14);
DateTime end = new DateTime(2009, 12, 14);
TimeSpan difference = end - start; //create TimeSpan object
int days = (int)Math.Ceiling(difference.TotalDays); //Extract days, counting parts of a day as a full day (rounding up).
Console.WriteLine("Difference in days: " + days); //Write to Console.
Run Code Online (Sandbox Code Playgroud)
计算为一天的一部分(不使用Math.Ceiling(),而是以十进制形式作为一天的一部分):
//establish DateTimes
DateTime start = new DateTime(2009, 6, 14);
DateTime end = new DateTime(2009, 12, 14);
TimeSpan difference = end - start; //create TimeSpan object
double days = difference.TotalDays; //Extract days, counting parts of a day as a part of a day (leaving in decimal form).
Console.WriteLine("Difference in days: " + days); //Write to Console.
Run Code Online (Sandbox Code Playgroud)
算作一天中的任何事情(四舍五入到完整天数):
//establish DateTimes
DateTime start = new DateTime(2009, 6, 14);
DateTime end = new DateTime(2009, 12, 14);
TimeSpan difference = end - start; //create TimeSpan object
int days = difference.TotalDays; //Extract days, counting parts of a day as nothing (rounding down).
Console.WriteLine("Difference in days: " + days); //Write to Console.
Run Code Online (Sandbox Code Playgroud)
使用
DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0);
DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0);
TimeSpan travelTime = arrival - departure;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65285 次 |
| 最近记录: |