2017-09-24 153 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

欢迎您 –