2017-09-24 191 views
-1

能否幫助我在Java中顯示時差?我已經做到了,但是有一些代碼不應該被重寫。使用Java編寫效率更高效

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Time { 

    public static void main(String[] args) throws Exception { 
     Date dt = new Date(); 
     DateFormat[] dtformat = new DateFormat[6]; 
     dtformat[0] = DateFormat.getInstance(); 
     dtformat[1] = DateFormat.getDateInstance(); 
     dtformat[2] = DateFormat.getDateInstance(DateFormat.MEDIUM); 
     dtformat[3] = DateFormat.getDateInstance(DateFormat.FULL); 
     dtformat[4] = DateFormat.getDateInstance(DateFormat.LONG); 
     dtformat[5] = DateFormat.getDateInstance(DateFormat.SHORT); 
     System.out.println("Today :"); 
     for(DateFormat dateform : dtformat) 
      System.out.println(dateform.format(dt)); 

     String str = "May 21 1980"; 
     SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy"); 
     Date date = df.parse(str); 
     long epoch = date.getTime(); 

     Date dl = new Date(epoch); 
     DateFormat[] dlformat = new DateFormat[6]; 
     dlformat[0] = DateFormat.getInstance(); 
     dlformat[1] = DateFormat.getDateInstance(); 
     dlformat[2] = DateFormat.getDateInstance(DateFormat.MEDIUM); 
     dlformat[3] = DateFormat.getDateInstance(DateFormat.FULL); 
     dlformat[4] = DateFormat.getDateInstance(DateFormat.LONG); 
     dlformat[5] = DateFormat.getDateInstance(DateFormat.SHORT); 
      System.out.println("\nDate of Birth :"); 
      for(DateFormat dateform : dlformat) 
      System.out.println(dateform.format(dl)); 

      System.out.println("\nDifference Days: " + Diff(dl,dt) + " hari"); 
    } 
    public static long Diff(Date dl, Date dt) { 
     long diffdays = dt.getTime() - dl.getTime(); 
     long days = diffdays/(24 * 60 * 60 * 1000); 
     return days; 
    } 
} 

輸出應該是一樣的,如: 17年9月24日下午11時31

2017年9月24日

2017年9月24日

週日,9月24日,2017

2017年9月24日

9/24/17

+2

如果此代碼有效,請在[codereview.se]提問您的問題。 –

+0

@AndyTurner爲什麼我們不能選擇CR作爲標記此問題時應該發佈此問題的替代網站? –

+0

順便說一句,有沒有什麼特別的原因讓你仍然在爲長期過時的類「Date」而苦苦掙扎,而不是最簡單的SimpleDateFormat?我建議你把它們扔掉,並使用現代的'LocalDate'和'DateTimeFormatter.ofLocalizedDate()'。現代的API非常適合與之合作。 –

回答

0

下面的代碼幾乎可以代替您的代碼,但通過將邏輯的重複部分移動到單獨的方法來刪除該邏輯的重複部分。每次需要使用指定的日期格式打印任何日期時,可以通過傳遞來調用printDates a Date對象

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Time { 

    public static void main(String[] args) throws Exception { 
     Date dt = new Date(); 
     printDates(dt); 

     String str = "May 21 1980"; 
     SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy"); 
     Date date = df.parse(str); 
     long epoch = date.getTime(); 

     Date dl = new Date(epoch); 
     printDates(dl); 

      System.out.println("\nDifference Days: " + Diff(dl,dt) + " hari"); 
    } 
    public static long Diff(Date dl, Date dt) { 
     long diffdays = dt.getTime() - dl.getTime(); 
     long days = diffdays/(24 * 60 * 60 * 1000); 
     return days; 
    } 


    public static void printDates(Date date){ 
      DateFormat[] dlformat = new DateFormat[6]; 
      dlformat[0] = DateFormat.getInstance(); 
      dlformat[1] = DateFormat.getDateInstance(); 
      dlformat[2] = DateFormat.getDateInstance(DateFormat.MEDIUM); 
      dlformat[3] = DateFormat.getDateInstance(DateFormat.FULL); 
      dlformat[4] = DateFormat.getDateInstance(DateFormat.LONG); 
      dlformat[5] = DateFormat.getDateInstance(DateFormat.SHORT); 
      System.out.println("\nDate of Birth :"); 
      for(DateFormat dateform : dlformat) 
      System.out.println(dateform.format(date)); 
    } 
} 
+0

謝謝你的幫助,先生:) –

+0

歡迎您 –