В последнем стандарте есть ключевое слово (export
), которое поможет устранить эту проблему, но оно не реализовано ни в компилере, о котором я знаю, кроме Comeau.
Об этом можно узнать в FAQ-lite .
Как сказано в документе о ChronoUnit.between
Вычисление возвращает целое число, представляющее количество полных единиц между двумя темпоралами.
blockquote>И
// these two lines are equivalent between = thisUnit.between(start, end); between = start.until(end, thisUnit);
Таким образом, между
есть 5 полных месяцев"2018-11-30" December -> 1 January -> 2 February -> 3 March -> 4 May -> 5 "2019-05-01"
Я думаю, в документации все сказано здесь:
Вычисление возвращает целое число, представляющее количество полных единиц между двумя темпоралами. , Например, количество часов в промежутке между 11:30 и 13:29 будет составлять всего один час, поскольку одной минуте не хватает двух часов.
blockquote>Число целых месяцев между 30 ноября и 1 мая: 5:
- декабрь
- январь
- февраль [113 ]
- март
- апрель
Почему вы думаете, что должно быть 6? Полуоткрытый просто говорит, что первый день включительно, а последний день - эксклюзивно. За исключением 1 мая ничего не происходит, весь апрель все еще в диапазоне. В том числе 30 ноября - это еще не целый месяц, поэтому все равно 5.