2015-10-26 4 views
2

Я хочу отобразить дату завтрашнего дня по дате (месяц, год) У меня нет опыта программирования, но я пытаюсь привыкнуть к этому. Я закодировал это, но он даже не работает, и я застрял на этом. Может ли кто-нибудь взглянуть?Я хочу показать дату завтра после указанной даты

int Year, Month, Day; 
int tYear, tMonth, tDay; 

System.out.print("Enter the month [1 to 12]: "); 
System.out.print("Enter the day of the month [1 to 31]: "); 
System.out.print("Enter the year: "); 

tDay = Day + 1; 
tMonth = Month; 
tYear = Year; 

if (Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12) { 

    if (tDay > 31) { 
     tMonth = Month + 1; 
     tDay = 1; 
    } 
} else if (Month == 4 || Month == 6 || Month == 9 || Month == 11) { 

    if (tDay > 30) { 
     tMonth = Month + 1; 
     tDay = 1; 
    } 
} else { 

    if ((Year % 4 == 0) && (!(Year % 100 == 0) || (Year % 400) == 0)) { 

     if (tDay > 29) { 
      tMonth = 3; 
      tDay = 1; 
     } 
    } else { 
     if (tDay > 28) { 
      tMonth = 3; 
      tDay = 1; 
     } 
    } 
} 

if (tMonth == 13) { 
    tMonth = 1; 
    tYear = Year + 1; 
} 

System.out.println("Today's date is: " + Month + 
    "/" + Day + "/" + Year + "."); 
System.out.println("Tomorrow's date will be: " + tMonth + 
    "/" + tDay + "/" + tYear + "."); 
+1

Можно ли использовать API Java Date API? Вы используете Java 8? – Andreas

+1

Есть достаточно достойных способов, где вы можете установить дату и сделать что-то вроде: addDays (1); Проверьте JodaTime, например – Stultuske

+0

пример использования java 8 date api (который поможет решить ваши проблемы) https://dzone.com/articles/deeper-look-java-8-date-and –

ответ

1

Используйте Calendar класс для этого:

int year, month, day; 
    int tYear, tMonth, tDay; 

    System.out.print("Enter the month [1 to 12]: "); 
    System.out.print("Enter the day of the month [1 to 31]: "); 
    System.out.print("Enter the year: "); 

    // read values 

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.YEAR, year); 
    calendar.set(Calendar.MONTH, month - 1); 
    calendar.set(Calendar.DATE, day); 

    calendar.add(Calendar.DATE, 1); 

    tYear = calendar.get(Calendar.YEAR); 
    tMonth = calendar.get(Calendar.MONTH) + 1; 
    tDay = calendar.get(Calendar.DATE); 

    System.out.println("Today's date is: " + month + 
      "/" + day + "/" + year + "."); 
    System.out.println("Tomorrow's date will be: " + tMonth + 
      "/" + tDay + "/" + tYear + "."); 

Также рекомендую использовать DateFormat для форматирования или синтаксического анализа Date:

SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 

    int year, month, day; 

    System.out.print("Enter the month [1 to 12]: "); 
    System.out.print("Enter the day of the month [1 to 31]: "); 
    System.out.print("Enter the year: "); 

    // read values 

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.YEAR, year); 
    calendar.set(Calendar.MONTH, month - 1); 
    calendar.set(Calendar.DATE, day); 

    String today = format.format(calendar.getTime()); 

    calendar.add(Calendar.DATE, 1); 

    String tomorrow = format.format(calendar.getTime()); 

    System.out.println("Today's date is: " + today + "."); 
    System.out.println("Tomorrow's date will be: " + tomorrow + "."); 
+0

Небольшая незначительная коррекция OP после ввода date + 1 * day *, поэтому вам нужно исправить код примера ... – Nim

+0

@Nim, Не могли бы вы объяснить более подробно. Я не поймал, извините –

+0

. Текущий код добавляет месяц ... во входной день, op хочет добавить 1 * день * – Nim

1

Я хотел бы использовать JodaTime для всего этого. Существует plusDays функции есть

DateTime dt = new DateTime(2015,9,20, 0, 0); 
DateTime oneDayLater = dt.plusDays(1); 

Существует Задан ctor, что позволяет передавать в мсе с 1970, что позволит вам легко использовать Календарь и даты классы Java с этим.

0

java.time

В Java 8 и более поздних java.time рамки обрабатывает эту задачу.

LocalDate dayAfter = LocalDate.of(2012 , 3 , 4).plusDays(1); 
Смежные вопросы