nodatime - 使用 `Period.Between` 和减去两个本地日期之间的区别
问题描述
为什么和的结果periodBetween.Days
不同substracted.Days
?我可以看到 aperiodBetween.Months
是 0 和substracted.Months
2,我可以看到这两个结果有何不同,但我不知道为什么 :)。
using NodaTime;
void Main()
{
var firstDate = new LocalDate(2020, 8, 1);
var secondDate = new LocalDate(2020, 10, 30);
var periodBetween = Period.Between(firstDate, secondDate, PeriodUnits.Days);
var subtracted = secondDate - firstDate;
Console.WriteLine(periodBetween.Days);
Console.WriteLine(subtracted.Days);
}
解决方案
您的periodBetween
计算是说“这两个日期之间的时间段是多少,仅使用天数?”
您的subtracted
计算相当于在Period.Between
不指定任何单位的情况下调用,或者指定PeriodUnits.Days | PeriodUnits.Months | PeriodUnits.Years
- 换句话说,“这两个日期之间的时间段是多少,使用天、月和年?”
一个时期具有年、月、日、小时、分钟等的独立值 - 如果您使用年/月/日计算一个值,这不等同于仅使用天计算一个值。
“90天”的期限与“2个月零29天”的期限不同。在某些计算中,他们会给出相同的答案,但并非总是如此。例如,如果您将“90 天”添加到 2020 年 1 月 1 日,您将获得 2020 年 3 月 31 日......但如果您将“2 个月零 29 天”添加到 2020 年 1 月 1 日,您将获得 2020 年 3 月30 日。
推荐阅读
- python - 针对 SQL Server 的 Prefetch_related 失败
- c# - 如果子列表为空,则无法使用 linq 转换具有子列表的对象列表?
- python - Python:如果没有任何尝试理解处理输出的差异
- structure - 定义为结构的 2 个多项式的乘法函数
- jquery - 是否可以包装 tbody 标签
- c# - 如何在 C# 中的列表中合并字符串
- python - 即使在更改标头和 IP 之后,验证码也会使用请求。我是如何被跟踪的?
- javascript - 我尝试从登录表单中获取信息并将其更改为 id
- mongodb - MongoDB创建数组内键的所有文本值的索引
- javascript - 如何使用 fetch 检索 JSONP?