2015-07-07 3 views
0

Это хороший способ написать это, или есть более раздутая форма, которую я мог бы использовать?Как сконденсировать этот код

import java.util.Calendar; 

public class Day { 

    public static void main(String[] args){ 
     Calendar cal = Calendar.getInstance(); 
     System.out.println("Todays date is : " + cal.getTime()); 


//increment by one from current date 

     int OneIncrementalDay = 1; 
     cal.getTime(); 
     cal.add(Calendar.DATE, 
       OneIncrementalDay); 
     System.out.println("Tomorrows date is : " + cal.getTime()); 

//deduction by one from current date 

     int OneDayDeducted = -1; 
     cal.getTime(); 
     cal.add(Calendar.DATE, 
       OneDayDeducted); 
     System.out.println("Yesterdays date was : " + cal.getTime()); 
     cal.getTime(); 

//increment of 15 from current date 

     int FifteenDaysIncremental = 15; 
     cal.getTime(); 
     cal.add(Calendar.DATE, 
       FifteenDaysIncremental); 
     System.out.println("15 days from the current" 
       + " date is : " + cal.getTime()); 


    } 
} 
+0

Рассмотрите возможность использования Java 8 по времени API или Joda-Time, и уменьшит количество кода – MadProgrammer

+2

Это также может быть лучше подходит для [Code Review Биржевого] ​​(HTTP: // codereview.stackexchange.com/) – MadProgrammer

ответ

0

Да, если вы используете Java 8 вы можете использовать новые java.time API:

import java.time.LocalDate; 
    import java.time.format.DateTimeFormatter; 

    ... 

    //or whatever format you want to use 
    DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE; 

    //java.time.LocalDate 
    LocalDate today = LocalDate.now(); 

    System.out.println("Todays date is : " + today.format(fmt)); 


    //increment by one from current date 
    System.out.println("Tomorrows date is : " + today.plusDays(1).format(fmt)); 

    System.out.println("Yesterdays date was : " + today.minusDays(1).format(fmt)); 

     System.out.println("15 days from the current date is " + today.plusDays(15).format(fmt)); 

Есть также методы для добавления/вычитания месяцев года и т.д.

0

То, что вы хорошо для читаемость, но если вы действительно хотите ее сжать, есть одна вещь, которую вы могли бы сделать. Поскольку каждый из трех блоков, в основном то же самое за исключением величин, положить все свои значения в массивах длины три, а затем использовать цикл для изменения значений соответственно, такие как:

int[] increments = {1, -1, 15}; 
String[] text = {"Tomorrows date is : ", 
       "Yesterdays date was : ", 
       "15 days from the current date is : "}; 

for (int i = 0; i < increments.length; i++) 
{ 
    cal.getTime(); 
    cal.add(Calendar.DATE, increments[i]); 
    System.out.println(text[i] + cal.getTime()); 
} 
0

Если им программисту для что один я буду делать это как этот

import java.util.Calendar; 

    public class Day { 
     Calendar cal = Calendar.getInstance(); 

    public Calendar inCrementNumberofDays(Integer day){ 
      cal.getTime(); 
      cal.add(Calendar.DATE, 
        day); 
      return cal;   
    } 

    public Calendar decrementNumberofDays(Integer day){ 
      day = day * -1; 
      cal.getTime(); 
      cal.add(Calendar.DATE, 
        day); 
      return cal;   
    } 
    public static void main(String[] args){ 

      System.out.println("Todays date is : " + cal.getTime()); 

    //increment by one from current date 
      cal = inCrementNumberofDays(1); 
      System.out.println("Tomorrows date is : " + cal.getTime()); 

    //deduction by one from current date 
      cal = decrementNumberofDays(1); 
      System.out.println("Yesterdays date was : " + cal.getTime()); 

    //increment of 15 from current date 
      cal = inCrementNumberofDays(15); 
      System.out.println("15 days from the current" 
        + " date is : " + cal.getTime()); 
     } 
    } 
Смежные вопросы