【问题标题】:C# - Getting two dates then subtracting only the year [duplicate]C# - 获取两个日期然后只减去年份[重复]
【发布时间】:2017-08-04 06:04:14
【问题描述】:

我想知道年份,但 DateTime 中没有 TotalYears,所以我在这里试试运气。 我正在做的是我从这样的表格中输入日期

DateTime acquisition = DateTime.Parse(Request.Form["inputAcquisition"]);

然后是今天的日期,因此它将减去获取日期。

 DateTime now = DateTime.Now;

现在这是让我感到困惑的部分。减去它们

TimeSpan difference = now - acquisition ;

我收到了一些价值,但这就像2819:012:23123:1246 的胡言乱语 // 不是实际数据。

我怎样才能得到一年的总差额?如果我输入 2014 年 3 月 20 日,减去今天的年份,我会得到 3 作为输出?

【问题讨论】:

标签: c# date


【解决方案1】:

TimeSpan 的属性会告诉你两次之间已经过去了很多滴答。您可以使用.TotalDays 来获取代表的天数。在公历上,这不能很好地映射到年(您可以除以 365.24 以获得大致的年数)。

您需要确定您所说的年份是什么意思。 1 月 1 日在这两个日期之间交叉了多少次?日历年的差异(2017 - 2014 = 3)?等等

【讨论】:

    【解决方案2】:

    如下使用:

    //Option 1 - Just Years only
    DateTime current = DateTime.Now;
    DateTime d = new DateTime(2014, 2, 20);
    int yearDiff = current.Year - d.Year;
    Console.WriteLine("Difference in Years: " + yearDiff);
    
    // Option 2 - More precise
    long diff = current.Ticks - d.Ticks;
    DateTime yearDiff2 = new DateTime(diff);
    Console.WriteLine("Difference in Years: " + yearDiff2.Year);
    

    类似问题:Calculate the difference between two dates and get the value in years?

    【讨论】:

    • 希望您忘记添加对this的引用
    • 我使用了选项 1。如果闰年有问题或麻烦吗?
    • 闰年没关系。在第一个选项中,它将仅考虑年份。在第二个选项中,它将考虑月、日、小时等,并以年为单位给出确切的差异。例如,如果您的输入是 2014 年 1 月 1 日,则第一个选项的输出将为 3(2017 - 2014),第二个选项的输出为 4(因为它考虑月、日、小时等)
    • @RajeshKrishna:你也必须阅读this
    • 谢谢你,伙计...我没有看到这些答案。正如您建议的那样,添加对其他答案的引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2012-10-13
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多