Contoh dalam artikel ini menjelaskan kelas pemrosesan waktu dan tanggal JAVA, yang terutama digunakan untuk melintasi setiap hari antara dua tanggal. Bagikan dengan semua orang untuk referensi Anda. Dengan rincian sebagai berikut:
/*** * Nama file: AccountDate.java* * Waktu pembuatan: 18-11-2008** Email: **@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 { pribadi static transient int gregorianCutoverYear = 1582; /** Jumlah hari per bulan pada tahun kabisat*/ private static final int[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31 , 30, 31} ; /** Jumlah hari per bulan pada tahun non-kabisat*/ final statis privat int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /** Mewakili tahun, bulan, dan hari dalam array*/ private static final int Y = 0, M = 1, D = 2; /** * Pisahkan string yang mewakili tanggal menjadi array integer yang mewakili tahun, bulan dan hari* @param tanggal * @return */ public static int[] splitYMD(String tanggal){ tanggal = tanggal.replace("-", ""); = Integer.parseInt(tanggal.substring(0, 4)); ymd[M] = Integer.parseInt(tanggal.substring(4, 6)); ymd[D] = Integer.parseInt(date.substring(6, 8)); return ymd; } /** * Periksa apakah tahun yang diwakili oleh parameter yang diteruskan adalah tahun kabisat* @param tahun * @return */ public boolean statis isLeapYear(int tahun) { tahun kembali >= gregorianCutoverYear ? 0) || (tahun%400 == 0))) : (tahun%4 == 0); /** * Tanggal ditambah 1 hari* @param tahun * @param bulan * @param hari * @pengembalian */ private static int[] addOneDay(int tahun, int bulan, int hari){ if(isLeapYear( tahun )){ hari++; if( hari > DAYS_P_MONTH_LY[bulan -1 ] ){ bulan++; jika(bulan > 12){ tahun++; bulan = 1; } hari = 1; } }lainnya{ hari++; jika( hari > DAYS_P_MONTH_CY[bulan -1 ] ){ bulan++; = 1; } hari = 1; } } int[] ymd = {tahun, bulan, hari}; kembalikan ymd; Lengkapi bulan atau hari dengan kurang dari dua digit hingga dua digit * @param desimal * @return */ public static String formatMonthDay(int desimal){ DecimalFormat df = new DecimalFormat("00"); } /** * Melengkapi tahun dengan kurang dari empat digit hingga empat digit * @param desimal * @return */ public static String formatYear(int desimal){ DecimalFormat df = new DecimalFormat("0000"); return df.format( desimal } /** * Hitung jumlah hari antara dua tanggal * @param mulai * @param akhir * @return * @throws ParseException */ public static long countDay ( String mulai, String akhir){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Tanggal mulai, tanggal akhir hari yang panjang = 0; coba { BeginDate= format.parse(begin); endDate= format.parse(end); catch (ParseException e) { e.printStackTrace(); } hari kembali; } /** * Hitung tanggal dalam satu lingkaran* @param BeginDate endDate * @param hari * @return */ public static List<String> getEveryday(String startDate, String endDate){ hari panjang = countDay(beginDate, endDate); int[] ymd = splitYMD(beginDate); ArrayList<String>(); everyDays.add(beginDate); for(int i = 0; i < hari; i++){ ymd = addOneDay(ymd[Y], ymd[M], ymd[D]); everyDays.add(formatYear(ymd[Y])+"-"+formatMonthDay(ymd[M])+"-"+formatMonthDay( ymd[D])); } kembali setiap hari; } public static void main(String[] args) { Daftar<String> daftar = AccountDate.getEveryday("29-08-2008", "02-09-2008"); for (String hasil : daftar) { System.out.println(hasil);
Saya harap artikel ini bermanfaat untuk pemrograman Java semua orang.