当前位置: 首页 > 知识库问答 >
问题:

计算两个日期之间的年、月、日

宗政海
2023-03-14

我试图在我正在创建的C#应用程序中显示两个日期之间的年、月和日。(使用控制台进行测试)

我正在使用NodaTime来实现这一点,但在接下来的几个月里,我遇到了一些问题。

我已经阅读了这里的大部分问题和答案,但没有找到任何我可以从中受益的东西。

大多数时候函数工作但有时它不添加月如果天

我使用这个代码进行测试

LocalDate start = new LocalDate(2017, 10, 16);
LocalDate end = new LocalDate(2018, 1, 15);
Period period = Period.Between(start, end);

Console.WriteLine("{0} years, {1} months, {2} days",
                              period.Years, period.Months, period.Days);
Console.ReadLine();

(2017, 10, 16)和(2018, 1, 15)应该显示为3个月,但它们显示为2个月和30天(我试图在周期中添加1。天,但在我这样做后显示为31天)。我需要在显示格式时包括结束日期。

有什么我可以用来实现我需要的吗?我需要展示正确的格式:2年11个月3天

共有1个答案

徐茂材
2023-03-14

问题确实是,您在timeanddate中使用了“在计算中包含结束日期”。通用域名格式。解决方案不是在野田佳彦时间段中添加一天,而是在执行计算之前在结束日期添加一天:

Period period = Period.Between(start, end.PlusDays(1));

这将给你你的预期输出:

using System;
using NodaTime;

class Test
{
    static void Main()
    {
        LocalDate start = new LocalDate(2017, 10, 16);
        LocalDate end = new LocalDate(2018, 1, 15);
        Period period = Period.Between(start, end.PlusDays(1));

        Console.WriteLine(
            $"{period.Years} years, {period.Months} months, {period.Days} days");
    }
}

输出:

0 years, 3 months, 0 days

当思考像这样的“中间”问题时,我喜欢尝试思考一些非常简单的例子。

2018年1月23日到2018年1月24日之间是什么时间段?野田佳彦和我都说“一天”。(在1月23日之前再加上一天,你就得到了1月24日。)如果你说的是2018年1月23日至2018年1月24日这段时间间隔,那么这是两天。

 类似资料:
  • 我有两次约会。一个是以YYYYMMDD格式从其他应用程序的表中检索的,第二个日期是本地时间,我需要这两个日期之间的天数/月/年。 我试过了 但这给了我一些乱七八糟的数字。 变量$t=Fri Dec31 00:00:00 9999 变量$今天=Wed Feb19 14:40:55 2020 产出:25182094888 有什么想法吗?提前谢谢。

  • 我使用下面的代码计算两个日期之间的年、月和天的数目,使用 以上代码的预期输出是(使用此站点并使用google play store中的一个应用程序进行勾选) null 如果需要更多的信息请告诉我。提前道谢。你的努力将会受到赞赏。

  • 问题内容: 我有两个约会: 开始日期: 结束日期: 在上述两个日期之间的91天持续时间,我希望我的代码返回3个月的持续时间,但以下方法仅返回2个月。有谁有更好的建议?还是你们认为这是Java 8中的错误?工期为91天,仅返回2个月。 非常感谢你的帮助。 方法1: 方法2: 方法3: 我尝试使用Joda库而不是Java 8 API,它可以工作。它会返回3,它看起来像Java持续时间月份的计算也使用了

  • 问题内容: 如果不使用PHP 5.3的date_diff函数(我使用的是PHP 5.2.17),是否有一种简单而准确的方法?我正在考虑以下代码,但是我不知道如何计算leap年: 我正在尝试计算一个人的月数。 问题答案: 您可能还希望将某天包括在内,具体取决于您是否指的是 整个 月。希望你能明白。

  • 请注意,这不是以下任何一个的复制品 计算两个Java日期实例之间的差异 用java计算两个日期之间的月份[重复] 我有两个约会: 开始日期: 它的91天持续时间之间的上述两个日期,我期望我的代码返回3个月的持续时间,但下面的方法只返回2个月。有人有更好的建议吗?还是你们认为这是8Java的窃听器?91天的期限只返回2个月。 非常感谢你的帮助。 方法1: 方法二: 方法3: 我尝试使用Joda库而不

  • 我已经搜索了4个小时了,但是还没有找到一个用JavaScript计算两个日期(年、月和天)之间差异的解决方案,比如:2010年4月10日是3年、x月和y天之前。 有很多解决方案,但它们只提供了日、月或年的格式差异,或者它们不正确(意味着没有考虑一个月或闰年的实际天数,等等)。做那件事真的有那么难吗? 我看了一下: http://momentjs.com/->只能输出年、月或天的差异 http://