Я также думаю, что нет ничего плохого в том, чтобы иметь двоичные файлы в управлении исходным кодом ... если есть веская причина для этого. Если у меня есть сборка, для которой у меня нет исходного кода, и она может не обязательно находиться в одном и том же месте на каждом компьютере разработчика, я обычно помещаю ее в каталог «binaries» и ссылаюсь на нее в проекте, используя относительный путь ,
Довольно много людей, кажется, думают, что я должен быть сожжен на костре за то, что даже упомянул «контроль источника» и «двоичный код» в одном предложении. Я даже знаю места, где есть строгие правила, согласно которым вы не можете их добавить.
Это решение, которое было выбрано.
/**
* Zone to use for input and output
*/
private static final DateTimeZone ZONE = DateTimeZone.forId("Europe/London");
/**
* Adds a number of days specified to the instant in time specified.
*
* @param instant - the date to be added to
* @param numberOfDaysToAdd - the number of days to be added to the instant specified
* @return an instant that has been incremented by the number of days specified
*/
public static Instant addNumberOfDaysToInstant(final Instant instant, final int numberOfDaysToAdd) {
return instant.toDateTime(ZONE).withFieldAdded(DurationFieldType.days(), numberOfDaysToAdd).toInstant();
}
Если вы хотите иметь дело с датами , не используйте моменты времени. Я подозреваю, что он правильно добавляет 48 часов к моменту.
Используйте вместо этого LocalDate
, а затем метод plusDays
.
Если вы хотите узнать момент, который наступит, n дней после указанного момента, в то же время суток, мы, несомненно, могли бы разработать способ сделать это (разделить момент на LocalDate
и LocalTime
, продвинуть LocalDate
, а затем соберите заново, или проверьте, выполняет ли LocalDateTime
то, что вы хотите), но вам нужно решить, что вы хотите, если исходное время повторяется дважды в новый день или не происходит вообще.
РЕДАКТИРОВАТЬ: Итак, вам нужно работать мгновенно. Это должно быть в исходном часовом поясе? Не могли бы вы использовать UTC? Это устранит проблемы с переходом на летнее время. Если нет, что вы хотите, чтобы он делал в случае двусмысленности или отсутствия (например, в 12:30 перед каждым переходом).
Предполагая остальную часть вашего кода:
public static void main(String[] args) {
DateTime dateTime = FORMATTER.parseDateTime("24/10/2009");
Instant pInstant = dateTime.withFieldAdded(DurationFieldType.days(),2).toInstant();
System.out.println("24/10/2009 + 2 Days = " + pInstant.toString(FORMATTER));
}