この記事の例では、JAVA の時刻と日付の処理クラスについて説明します。このクラスは、主に 2 つの日付の間を毎日移動するために使用されます。皆さんの参考に共有してください。詳細は以下のとおりです。
/*** * ファイル名: AccountDate.java* * 作成時刻: 2008-11-18** 電子メール: **@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 { private static transient int gregorianCutover Year = 1582; /** 閏年の月ごとの日数*/ private static Final int[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31 , 30, 31} ; /** うるう年以外の月の日数*/ private staticfinal int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} /** 配列内の年、月、日を表します*/ private staticfinal 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; } /** * 渡されたパラメータで表される年が閏年であるかどうかを確認します* @param year * @return */ public static boolean isLeap Year(int year) { return year >= gregorianCutover Year ? ((year%4 == 0) && ((year%100 != 0) || (年%400 == 0))) : (年%4 == 0); } /** * 日付プラス 1 日 * @param 年 * @param 日 * @return */ private static int[] addOneDay(int year, int month, int day){ if(isLeap Year( year )){ day++; if( day > DAYS_P_MONTH_LY[month -1 ] ){月++; if(月> 12){ 年++; 月 = 1; }else{ 日>_P_MONTH_CY[月-1] ){ 月++; = 1; } 日 = 1; } } int[] ymd = {年、月、日} /** *月または日を 2 桁未満から 2 桁に補完します * @param decimal * @return */ public static String formatMonthDay(int decimal){ DecimalFormat df = new DecimalFormat("00"); return df.format( decimal ); } /** * 4 桁未満の年を 4 桁に補完 * @param 10進数 * @return */ public static String formatyear(int decimal){ DecimalFormat df = new DecimalFormat("0000"); return df.format( decimal ); } /** * 2 つの日付の間の日数を計算します * @param begin * @param end * @return * @throws ParseException */ public static long countDay ( String begin,String end){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 日付 beginDate, endDate; = 0; 試してください { beginDate= format.parse(begin); endDate= format.parse(end); 日=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); catch (ParseException e) { e.printStackTrace(); } return day; } /** * ループ内で日付を計算します* @param beginDate endDate * @param days * @return */ public static List<String> getEveryday(String beginDate, String endDate){ long days = countDay(beginDate, endDate); int=splitYMD(beginDate); 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])); } 毎日を返す; } public static void main(String[] args) { List<String> リスト= AccountDate.getEveryday("2008-08-29", "2008-09-02"); for (String result : list) { System.out.println(result) } }
この記事が皆さんの Java プログラミングに役立つことを願っています。