L'exemple de cet article décrit la classe de traitement de l'heure et de la date JAVA, qui est principalement utilisée pour parcourir chaque jour entre deux dates. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :
/*** * Nom du fichier : AccountDate.java* * Heure de création : 2008-11-18** E-mail : **@163.com*/import java.text.DecimalFormat;import java.text.ParseException;import java. text.SimpleDateFormat ; importer java.util.ArrayList ; importer java.util.Date ; importer java.util.List ; classe publique AccountDate {privé static transient int gregorianCutoverYear = 1582 ; /** Nombre de jours par mois dans une année bissextile*/ private static final int[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31 , 30, 31} ; /** Nombre de jours par mois dans les années non bissextiles*/ finale statique privée int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /** Représente l'année, le mois et le jour dans le tableau*/private static final int Y = 0, M = 1, D = 2; /** * Divise la chaîne représentant la date en un tableau d'entiers représentant l'année, le mois et le jour* @param date * @return */ public static int[] splitYMD(String date){ date = date.replace("-", ""); = Integer.parseInt(date.substring(0, 4)); ymd[M] = Integer.parseInt(date.substring(4, 6)); ymd[D] = Integer.parseInt(date.substring(6, 8)); return ymd; } /** * Vérifiez si l'année représentée par le paramètre transmis est une année bissextile* @param year * @return */ public static boolean isLeapYear(int year) { return year >= gregorianCutoverYear ((year%4 == 0) && ((year%100 != 0) || (année%400 == 0))) : (année%4 == 0); } /** * Date plus 1 jour* @param année * @param mois * @param jour * @return */ private static int[] addOneDay(int année, int mois, int jour){ if(isLeapYear( année )){ day++; if( day > DAYS_P_MONTH_LY[month -1 ] ){ mois++; if(mois > 12){ année++; mois = 1; jour = 1; } }else{ jour++; if( jour > JOURS_MONTH_CY[mois -1 ] ){ mois++; = 1; } jour = 1; } } int[] ymd = {année, mois, jour}; Complétez le mois ou le jour avec moins de deux chiffres à deux chiffres * @param decimal * @return */ public static String formatMonthDay(int decimal){ DecimalFormat df = new DecimalFormat("00"); return df.format( decimal ); } /** * Complétez l'année avec moins de quatre chiffres à quatre chiffres * @param decimal * @return */ public static String formatYear(int decimal){ DecimalFormat df = new DecimalFormat("0000"); return df.format( decimal ); } /** * Calculer le nombre de jours entre deux dates * @param start * @param end * @return * @throws ParseException */ public static long countDay ( Début de la chaîne, fin de la chaîne){ SimpleDateFormat format = new SimpleDateFormat("aaaa-MM-jj"); Date de débutDate, date de fin; = 0; essayez { startDate= format.parse(begin); endDate= format.parse(end); catch (ParseException e) { e.printStackTrace(); return day; } /** * Calculer les dates dans une boucle* @param beginDate endDate * @param jours * @return */ public static List<String> getEveryday(String startDate, String endDate){ long jours = countDay(beginDate, endDate); int[] ymd = splitYMD(beginDate); ArrayList<String>(); EveryDays.add(beginDate); for(int i = 0; i < jours; 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> liste = AccountDate.getEveryday("2008-08-29", "2008-09-02"); pour (Résultat de la chaîne : liste) { System.out.println(result } }}
J'espère que cet article sera utile à la programmation Java de chacun.