gpt4 book ai didi

c# - 减去 2 个日期时间字段以获得剩余天数

转载 作者:IT王子 更新时间:2023-10-29 04:10:04 26 4
gpt4 key购买 nike

如果有人能帮我弄清楚减去 2 个日期时间字段以获得剩余天数差异,我将不胜感激。

最佳答案

用 C# 很容易做到这一点。 为了比较 DateTimes,我们有一个名为 TimeSpan 的类。在这种情况下,TimeSpan 结构将被定义为两个日期时间之间的差异

假设您的日期时间称为开始和结束。

DateTime start = new DateTime(2009, 6, 14);
DateTime end = new DateTime(2009, 12, 14);

我们已将 DateTimes 设置为 2009 年 6 月 14 日和 2009 年 12 月 14 日。

现在,让我们找出两者之间的区别。为此,我们创建了一个 TimeSpan:

TimeSpan difference = end - start;

有了这个 TimeSpan 对象,您可以用许多不同的方式来表达时间上的差异。但是,您特别要求提供天数差异,因此您可以通过以下方式获得:

Console.WriteLine("Difference in days: " + difference.Days);

因此,该属性称为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.

有关使用 TimeSpan 结构的更多信息,请参阅 this MSDN documentation (尤其是 C# 示例)。

希望我有所帮助!

更新:一些答案建议一步完成减法,例如:

int days = (dt2 - dt1).Days;

int numDaysDiff = Math.Abs(date2.Subtract(date1).Days);

但是,它们与我的回答中的相同,只是缩短了。这是因为 DateTime.Subtract() 方法和 DateTimes 的减法运算符返回一个 TimeSpan,然后您可以从中访问天数。我在我的代码示例中特别使用了更长的方法,以便您清楚地了解 DateTime 和 TimeSpan 对象之间发生了什么,以及它们是如何工作的。当然,我刚才提到的其他方法也可以。

更新#2:

之前问过一个很相似的问题,可以查到here .但是,该问题的要点是为什么代码示例(本质上等同于所有答案的代码示例)有时 提供的答案是休息日。我认为这对这个问题也很重要。

正如另一个问题的主要答案所暗示的,您可以使用此代码:

int days = (int)Math.Ceiling(difference.TotalDays);

此代码使用 Math.Ceiling,根据 MSDN,它是:

Returns the smallest integral value that is greater than or equal to the specified double-precision floating-point number.

您想如何计算天数?

因此,我们现在遇到了您希望如何计算天数的问题。您是否要将一天的一部分(例如一天的 .5)计算为:

  • 一整天 - 这将使用 Math.Ceiling 对 TimeSpan.TotalDays 进行四舍五入,以便您计算开始的天数。
  • 一天的一部分 - 您可以将 TimeSpan.TotalDays(未四舍五入)作为小数(双数据类型)返回
  • Nothing - 您可以忽略一天中的那部分时间,只返回 TimeSpan.Days。

以下是上述代码示例:

算作一整天(使用 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.

计算为一天的一部分(不使用 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.

不算一天(向下取整天数):

//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.

关于c# - 减去 2 个日期时间字段以获得剩余天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com