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

野田时间:周期。()之间返回不正确的天数?

狄令
2023-03-14

鉴于下面的代码片段,为什么最后四个输出周期是相同的?我希望这些行的天数部分是4,3,2,1,而不是4,4,4,4。这是一个错误还是我遗漏了一些明显的东西?(天晚了,我很累,所以很可能是后者。)我用的是野田佳彦时间1.2.0。

for (int day = 25; day <= 31; day++)
{
    var d1 = new LocalDate(2013, 12, day);
    var d2 = new LocalDate(2015, 3, 4);

    var period = Period.Between(d1, d2);
    Debug.WriteLine("Day: {0}, Period: {1}", day, period);
}

// I get the following output:
Day: 25, Period: P1Y2M7D
Day: 26, Period: P1Y2M6D
Day: 27, Period: P1Y2M5D
Day: 28, Period: P1Y2M4D
Day: 29, Period: P1Y2M4D
Day: 30, Period: P1Y2M4D
Day: 31, Period: P1Y2M4D

共有1个答案

姜聪
2023-03-14

这是因为周期的计算是如何完成的——野田佳彦时间中的日期和时间算法:“规则非常简单:一次添加一个组件,从最重要的开始,并在每一步包装/截断。”

所以当它经过那个二月时,会发生28天的截断。如果你编辑代码从(2013,3, day)(2013, 5, 4)

Day: 25, Period: P1M9D
Day: 26, Period: P1M8D
Day: 27, Period: P1M7D
Day: 28, Period: P1M6D
Day: 29, Period: P1M5D
Day: 30, Period: P1M4D
Day: 31, Period: P1M4D

如果您仅以天数计算周期(周期。在(d1,d2,周期单位。天)之间),那么您将获得预期的递减计数:

Day: 25, Period: P434D
Day: 26, Period: P433D
Day: 27, Period: P432D
Day: 28, Period: P431D
Day: 29, Period: P430D
Day: 30, Period: P429D
Day: 31, Period: P428D
 类似资料:
  • 我在NodaTime lib上遇到了一个问题。我的目标是:在两个日期之间计算年/月/日期。下面是我的测试示例: 输出是:年:9,月:11,天:52 对我来说是错误的。我想得到,例如,下一个输出(当然,输出取决于月份的天数,假设我们的月份有31天):年: 10,月: 0,天: 21 所以,我想把日子四舍五入到年和月。我怎么能得到这个? 答案:利用马特的答案,我创造了下一个解决方案:

  • 所以我当前处于“America/Los_Angeles”时区(PDT)中,但是当我创建一个新的moment对象并通过moment tz将其时区设置为我所在的时区('America/Los_Angeles'),如下所示: 错误的时间被返回。具体来说就是提前8个小时。所有其他时区也会出现这种情况。 我是不是从根本上误解了这是怎么工作的? 谢谢你的帮助!

  • 问题内容: 我有一个包含表的MySQL数据库。 但是,我找不到在Java中将其作为Java中某种对象返回的方法。 我可以打电话给它,它会返回,但这并不好,因为没有办法比较字符串上的日期等。 我也可以打电话,但这根本不返回时间。 问题答案: 您需要使用Thomas的注释中建议的getTime()或getTimestamp()方法。举个例子… 说出要查询的表格,如下所示: 您可以这样做: 如果要使用J

  • 我有两项活动: MainActivity,它扩展了FragmentActivity并具有 ViewActivity,它只是一个活动,有MainActivity作为父级。 有一个从MainActivity的片段到ViewActivity的导航。问题是,当我从ViewActivity(按下back按钮)向后导航到MainActivity时,我得到了活动的第一个片段,丢失了所有的backstack片段。

  • 问题内容: 我有一个代码,可以使用np.busdaycount计算除周末以外的日期差异,但是我需要在我无法获得的小时数内。 除周末外,我的工作时间为小时。喜欢 问题 Inflow_date_time = 2019-08-01 23:22:46 End_date_time = 2019-08-05 17:43:51预期小时数42小时(1 + 24 + 17) Inflow_date_time = 2

  • 问题内容: 我需要计算MySQL中两个日期之间的差异(以天为单位),不包括周末(星期六和星期日)。也就是说,天数差减去两者之间的周六和周日数。 目前,我只是使用以下方法计算天数: 此收益,但我想排除周末,所以我想(因为第3和4、10、11和17日是周末)。 我不知道从哪里开始。我知道该功能和所有相关功能,但是我不知道如何在此上下文中使用它们。 问题答案: 插图: 伪代码: