Каков наилучший способ выполнения Time Arithimetic для типов java.sql.Time? - PullRequest
0 голосов
/ 02 декабря 2011

Я прочитал этот вопрос и кажется довольно затянутым, особенно потому, что я хочу сделать немного и избегать использования типов java.util.date. По сути, я хочу иметь возможность добавлять и вычитать произвольные значения времени в определенное время, например (0220 + 3 часа 45 минут). Лучшее, что у меня есть, - это преобразовать значение в тип long, затем выполнить арифметику, но я уверен, что это не тот путь. (возможные переполнения и неточности при обратном преобразовании?) Просто нужны идеи, как лучше всего это сделать.

1 Ответ

1 голос
/ 02 декабря 2011

Я думаю, что переход к long с последующим добавлением соответствующего количества миллисекунд, представляющих «3 часа и 45 минут», будет работать нормально. Невозможно переполнить его, если вы не добавите достаточно миллисекунд для переполнения 64-битной длины - это много миллисекунд.

long millis = time.getTime();
millis += 3 * 3600 * 1000;
millis += 45 * 60 * 1000;
time = new java.sql.Time(millis);

Еще один способ сделать это - использовать невероятные методы Joda Time, которые будут несколько дороже, но, безусловно, более читабельными / легкими:

org.joda.time.DateTime dateTime = new DateTime(time.getTime());
dateTime = dateTime.plusHours(3).plusMinutes(45);
time = new java.sql.Time(dateTime.getMillis());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...