То, что я пытаюсь сделать, это добавить период времени, основанный на другом флагсе Database. Я мог бы добавить дни, недели, месяцы или годы. Я не хочу заботиться о том, что я добавляю, и я хотел бы иметь возможность добавлять больше вариантов в будущем. Мгновенный, по -видимому, не поддерживает операции в больших единицах времени. Хорошо, что угодно, localDateTime делает. < /p>
Так что дает мне этот код: < /p>
Код: Выделить всё
private Date adjustDate(Date myDate, TemporalUnit unit){
Instant instant = myDate.toInstant();
LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
dateTime = dateTime.plus(1, unit);
Instant updatedInstant = dateTime.atZone(ZoneId.systemDefault()).toInstant();
return new Date(dueInstant.toEpochMilli());
}
< /code>
Теперь это мой первый раз, когда я использую новый API, поэтому я мог что -то пропустить здесь. Но мне кажется неуклюжим, что я должен идти: < /p>
Date --> Instant --> LocalDateTime --> do stuff--> Instant --> Date.
< /code>
Даже если бы мне не пришлось использовать часть даты, я все равно думаю, что это было немного неловко. Итак, мой вопрос: я делаю это совершенно неправильно и как лучше всего это сделать? < /p>
edit < /strong>: расширение обсуждения в комментариях. Спасибо всем. < /P>
Теперь более практичное рассмотрение. Допустим, пользователь отправляет мне дату, где бы он ни находился в мире, произвольный часовой пояс. Они отправляют мне 2014-04-16T13: 00: 00 Я предполагаю, что эта разница связана с некоторым типом неявного преобразования в/из UTC. Я думаю, что мой пояс по умолчанию может применяться к значению (EDT, UTC-4), которое объясняет, почему число выключено на 4 часа. < /P>
Новые вопросы (ы). Где здесь происходит неявное преобразование из местного времени в UTC? Какой лучший способ сохранить часовые пояса. Разве я не буду идти непосредственно с местного времени в качестве строки (2014-04-16T13: 00: 00) до LocalDateTime ? Должен ли я ожидать часового пояса от пользовательского ввода?
Подробнее здесь: https://stackoverflow.com/questions/227 ... aldatetime