Das Beispiel in diesem Artikel beschreibt die JAVA-Zeit- und Datumsverarbeitungsklasse, die hauptsächlich zum Durchlaufen jedes Tages zwischen zwei Datumsangaben verwendet wird. Teilen Sie es als Referenz mit allen. Die Einzelheiten lauten wie folgt:
/*** * Dateiname: AccountDate.java* * Erstellungszeit: 18.11.2008** E-Mail: **@163.com*/import java.text.DecimalFormat;import java.text.ParseException;import java. text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;public class AccountDate { privat static transient int gregorianCutoverYear = 1582; /** Anzahl der Tage pro Monat im Schaltjahr*/ private static final int[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31 , 30, 31} ; /** Anzahl der Tage pro Monat in Nicht-Schaltjahren*/ privates statisches Finale int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /** Stellt das Jahr, den Monat und den Tag im Array dar*/ privates statisches Finale int Y = 0, M = 1, D = 2; /** * Teilen Sie die Zeichenfolge, die das Datum darstellt, in ein ganzzahliges Array auf, das Jahr, Monat und Tag darstellt* @param date * @return */ public static int[] splitYMD(String date){ date = date.replace("-", ""); int = {0, 0, 0}; = Integer.parseInt(date.substring(0, 4)); ymd[M] = Integer.parseInt(date.substring(4, 6)); ymd[D] = Integer.parseInt(date.substring(6, 8)); return ymd; } /** * Überprüfen Sie, ob das durch den übergebenen Parameter dargestellte Jahr ein Schaltjahr ist* @param Jahr * @return */ public static boolean isLeapYear(int year) { return year >= gregorianCutoverYear ? ((year%4 == 0) && ((year%100 != 0) ||. (Jahr%400 == 0))) : (Jahr%4 == 0); } /** * Datum plus 1 Tag* @param Jahr * @param Monat * @param Tag * @return */ private static int[] addOneDay(int Jahr, int Monat, int Tag){ if(isLeapYear( Jahr)){ Tag++ if( Tag > DAYS_P_MONTH_LY[Monat -1 ] ){ Monat++; if(Monat > 12){ Jahr++; Tag = 1; }else{ Tag++; = 1; } Tag = 1; } int[] ymd = {Jahr, Monat, Tag}; Ergänzen Sie den Monat oder Tag mit weniger als zwei Ziffern zu zwei Ziffern * @param decimal * @return */ public static String formatMonthDay(int decimal){ DecimalFormat df = new DecimalFormat("00"); return df.format( decimal ); } /** * Ergänze das Jahr mit weniger als vier Ziffern zu vier Ziffern * @param decimal * @return */ public static String formatYear(int decimal){ DecimalFormat df = new DecimalFormat("0000"); return df.format( decimal ); } /** * Berechnen Sie die Anzahl der Tage zwischen zwei Daten * @param begin * @param end * @return * @throws ParseException */ public static long countDay ( String begin,String end){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Datum beginDate, endDate; = 0; try { beginDate= format.parse(end); day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); Catch (ParseException e) { e.printStackTrace(); } return day } /** * Datumsangaben in einer Schleife berechnen* @param beginDate endDate * @param days * @return */ public static List<String> getEveryday(String beginDate, String endDate){ long days = countDay(beginDate, endDate); int = splitYMD(beginDate); List<String> everyDays = new ArrayList<String>(); everyDays.add(beginDate); for(int i = 0; i < days; i++){ ymd = addOneDay(ymd[Y], ymd[M], ymd[D]); everyDays.add(formatYear(ymd[Y])+"-"+formatMonthDay(ymd[M])+"-"+formatMonthDay( ymd[D])); } return everyDays; } public static void main(String[] args) { List<String> list = AccountDate.getEveryday("2008-08-29", "2008-09-02"); for (String result : list) { System.out.println(result);
Ich hoffe, dass dieser Artikel für die Java-Programmierung aller hilfreich sein wird.