用Java更高效地编写

用Java更高效地编写,java,arrays,datetime,date-format,epoch,Java,Arrays,Datetime,Date Format,Epoch,你们能帮我用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 { Dat

你们能帮我用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;
    }
}
输出应相同,如: 2017年9月24日11:31下午

2017年9月24日

2017年9月24日

2017年9月24日星期日

2017年9月24日


2017年9月24日

下面的代码与您的代码基本相同,但通过将其移动到一个单独的方法来删除重复的逻辑部分。每次需要使用指定的日期格式打印任何日期时,您都可以通过传递
日期
对象来调用
打印日期

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));
    }
}

如果此代码有效,请在@AndyTurner上询问您的问题。为什么我们不能选择CR作为标记此问题时应发布此问题的替代站点?顺便问一下,是否有任何特殊原因导致您仍在与过时的类
Date
以及麻烦的
SimpleDateFormat
斗争?我建议您扔掉它们,使用现代的
LocalDate
DateTimeFormatter.ofcalizeddate()
。现代API使用起来非常方便。谢谢您的帮助,先生:)