В примере в этой статье описывается класс обработки времени и даты JAVA, который в основном используется для перемещения каждого дня между двумя датами. Поделитесь этим со всеми для справки. Подробности следующие:
/*** * Имя файла: AccountDate.java* * Время создания: 18.11.2008** Электронная почта: **@163.com*/import java.text.DecimalFormat;import java.text.ParseException;import java. text.SimpleDateFormat; импорт java.util.ArrayList; импорт java.util.Date; импорт java.util.List; общедоступный класс AccountDate {частный static transient int gregorianCutoverYear = 1582 /** Количество дней в месяце високосного года*/ Private static Final int[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31 , 30, 31} ; /** Количество дней в месяце в невисокосные годы*/ Private static Final int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} /** Представляет год, месяц и день в массиве*/ Private static Final int Y = 0, M = 1, D = 2 /** * Разделить строку, представляющую дату, на целочисленный массив, представляющий год, месяц и день*; @param date * @return */ public static int[] SplitYMD(String date){ date = date.replace("-", ""); int[] ymd = {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; /** * Проверяем, является ли год, представленный переданным параметром, високосным* @paramyear * @return */ public static boolean isLeapYear(intyear) { returnyear >= gregorianCutoverYear ? ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) : (year%4 == 0); /** * Дата плюс 1 день* @param год * @param месяц * @param день * @return */ Private static int[] addOneDay(intyear, intmonth,intday){ if(isLeapYear(year)){day++; if(day > DAYS_P_MONTH_LY[month -1]){ месяц++; если(месяц > 12){год++; месяц = 1; } день = 1; } }else {день++; если(день > DAYS_P_MONTH_CY[месяц -1] ){месяц > 12){год++; = 1; } день = 1; } } int[] ymd = {год, месяц, день}; return ymd; Дополните месяц или день менее чем двумя цифрами до двух цифр * @param decimal * @return */ public static String formatMonthDay(int decimal) { DecimalFormat df = new DecimalFormat("00" return df.format( decimal ); } /** * Дополните год менее чем четырьмя цифрами до четырех цифр * @param decimal * @return */ public static String formatYear(int decimal){ DecimalFormat df = new DecimalFormat("0000"); return df.format( decimal ); } /** * Вычислить количество дней между двумя датами * @param Begin * @param end * @return * @throws ParseException */ public static long countDay ( Начало строки, конец строки) { Формат SimpleDateFormat = new SimpleDateFormat("гггг-ММ-дд"); Date BeginDate, EndDate длинный день; = 0; попробуйте { BeginDate= format.parse(begin); endDate= format.parse(end); day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); catch (ParseException e) { e.printStackTrace(); return day } /** * Вычисление дат в цикле* @param BeginDate endDate *; @paramdays * @return */ public static List<String> getEveryday(String BeginDate, String endDate) { long Days = countDay(beginDate, endDate); int[] ymd = 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 (Строковый результат: список) { System.out.println(result);
Я надеюсь, что эта статья будет полезна каждому, кто занимается программированием на Java.