Как добавить однажды к дате? [дубликат]

Разложите его в функцию и сделайте каждое условие охранной оговоркой:

int maybe_do_something(...) {
    if(something != -1)
        return 0;
    if(somethingelse != -1)
        return 0;
    if(etc != -1)
        return 0;
    do_something();
    return 1;
}
199
задан Daniel Rikowski 17 June 2009 в 21:29
поделиться

4 ответа

Given a Date dt you have several possibilities:

Solution 1: You can use the Calendar class for that:

Date dt = new Date();
Calendar c = Calendar.getInstance(); 
c.setTime(dt); 
c.add(Calendar.DATE, 1);
dt = c.getTime();

Solution 2: You should seriously consider using the Joda-Time library, because of the various shortcomings of the Date class. With Joda-Time you can do the following:

Date dt = new Date();
DateTime dtOrg = new DateTime(dt);
DateTime dtPlusOne = dtOrg.plusDays(1);

Solution 3: With Java 8 you can also use the new JSR 310 API (which is inspired by Joda-Time):

Date dt = new Date();
LocalDateTime.from(dt.toInstant()).plusDays(1);
459
ответ дан 23 November 2019 в 05:07
поделиться

Чтобы сделать его менее специфичным для Java, основным принципом было бы преобразование в некоторый линейный формат даты, юлианские дни, модифицированные юлианские дни, секунды с некоторой эпохи и т. Д., Добавьте свой день, и преобразовать обратно.

Причина этого в том, что вы передаете задачу «получить високосный день, секунду координации и т. д. правильно» тому, кто, если повезет, не решил эту проблему.

I предупредит вас, что правильное выполнение этих процедур преобразования может быть трудным. Существует удивительное количество различных способов, которыми люди портят время, самым последним известным примером был Zune от MS. Не высмеивайте MS, это легко Не помогает то, что существует несколько разных форматов времени, скажем, TAI vs TT.

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

используйте объект DateTime obj.Add, чтобы добавить любой желаемый день, час и т. Д. Надеюсь, это сработает :)

4
ответ дан 23 November 2019 в 05:07
поделиться
Date today = new Date();
Date tomorrow = new Date(today.getTime() + (1000 * 60 * 60 * 24));

В Date есть конструктор, использующий миллисекунды с эпохи UNIX. метод getTime () дает вам это значение. Таким образом, добавление миллисекунд на день поможет. Если вы хотите делать такие манипуляции регулярно, я рекомендую определять константы для значений.

Важный совет: это не во всех случаях. Прочтите комментарий ПРЕДУПРЕЖДЕНИЕ ниже.

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

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