Joda-разовый: каково различие между Периодом, Интервалом и Продолжительностью?

В Joda-разовых 2, что является различием между тремя видами отрезков времени:

  • Период
  • Интервал
  • Продолжительность

    1. Почему нам нужны три класса?

    2. Какой работает лучше?

    3. Почему деление является экземпляром Продолжительности или Периода или Интервала, не реализованным? Например. p = p.divideBy(2);

189
задан Basil Bourque 2 July 2015 в 12:12
поделиться

2 ответа

3 класса необходимы, потому что они представляют разные концепции, поэтому вопрос выбора подходящего для работы, а не относительной производительности. Из документации с комментариями, добавленными мной курсивом :


интервал в Joda-Time представляет интервал времени от одного миллисекундного момента до другого. . Оба момента являются полностью указанными моментами в континууме datetime с указанием часового пояса. Определенное время определяется, например, это может быть интервал между 20: 00: 00GMT вчера и 09: 00: 00GMT сегодня утром.

Длительность в Joda-Time представляет собой продолжительность времени, измеряемую в миллисекундах. Продолжительность часто получается из интервала. т.е. мы можем вычесть начало из конца интервала, чтобы получить продолжительность

период в Joda-Time представляет период времени, определенный в полях, например, 3 года 5 месяцев 2 дня и 7 часы. Это отличается от продолжительности тем, что является неточным в миллисекундах. Период может быть разрешен только до точного числа миллисекунд, указав момент (включая хронологию и часовой пояс), к которому он относится. например. рассмотрим период в 1 год, если мы прибавим его к 1 января, мы всегда получим следующее 1 января, но продолжительность будет зависеть от того, является ли прошедший год високосным или нет.Точно так же, если мы добавим 1 месяц к 1-му числу месяца, мы придем к 1-му числу следующего месяца, но продолжительность (в миллисекундах) будет варьироваться в зависимости от месяца, о котором идет речь.


Для вопроса 3, Конкретный метод деления длительность на самом деле не нужна, потому что мы всегда можем получить количество миллисекунд из продолжительности как long (используя getMillis () ), разделить его и построить новую длительность (используя новая длительность (большая продолжительность) ).

Разделение периода на самом деле не имеет реального значения, исходя из определения периода, приведенного выше. например что такое полмесяца? (его длина будет зависеть от месяца).

244
ответ дан 23 November 2019 в 05:40
поделиться

Чтобы добавить к ответу mikej :

A Joda-Time duration is a " физический «временной интервал; например:

12000 миллисекунд <- это продолжительность

Интервал Joda-Time на самом деле является парой моментов (начальный момент - конечный момент) . Момент - это опять же «физическая» концепция, точка на временной шкале. Например (только возможные обозначения):

(03.03.2010 19: 00: 00.000 UTC; 03.03.2010 20:00:00.000 UTC) <- это интервал

. Тогда интервал может быть преобразован в продолжительность , но не наоборот.

Рассмотрим эти два интервала:

I1 = (2010/3/3 19: 00: 00.000 UTC; 2010/3/3 20: 00: 00.000 UTC)

I2 = (2010/3/3 21 : 00: 00.000 UTC; 2010/3/3 22: 00: 00.000 UTC)

Как интервалы, I1 и I2 разные, потому что конечные точки разные; но если я конвертирую их в длительности, я получаю то же самое: 3600000 миллисекунд .

(Математическая аналогия: интервалы [10,12] и [95,97] - разные интервалы , но имеют одинаковые ) length : «длина интервала» отображается на длительность ).

Наконец, период - это промежуток «гражданского времени», выраженный в количестве месяцев, дней, часов и т. Д. Он сам по себе не представляет собой «физический» интервал, поэтому его нельзя напрямую преобразовать в продолжительность (месяцы имеют переменную длину ...).

Это отвечает на вопрос 3: физическое время (продолжительность) можно разделить только на два.

88
ответ дан 23 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: