ตัวอย่างในบทความนี้อธิบายคลาสการประมวลผลเวลาและวันที่ของ JAVA ซึ่งส่วนใหญ่จะใช้เพื่อสำรวจทุกวันระหว่างวันที่สองวัน แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ รายละเอียดมีดังนี้:
/*** * ชื่อไฟล์: AccountDate.java* * เวลาสร้าง: 11-11-2551** อีเมล: **@163.com*/import java.text.DecimalFormat;import java.text.ParseException;import java. text.SimpleDateFormat; นำเข้า java.util.ArrayList; นำเข้า java.util.Date; นำเข้า java.util.List; ระดับสาธารณะ AccountDate { ส่วนตัว คงที่ชั่วคราว int gregorianCutoverYear = 1582; /** จำนวนวันต่อเดือนในปีอธิกสุรทิน*/ int สุดท้ายคงที่ส่วนตัว[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31 , 30, 31} ; /** จำนวนวันต่อเดือนในปีที่ไม่ใช่ปีอธิกสุรทิน*/ รอบชิงชนะเลิศแบบคงที่ส่วนตัว int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /** แทนปี เดือน และวันในอาร์เรย์*/ รอบชิงชนะเลิศแบบคงที่ส่วนตัว int Y = 0, M = 1, D = 2; /** * แยกสตริงที่แสดงวันที่ออกเป็นอาร์เรย์จำนวนเต็มแทนปี เดือน และวัน* @param date * @return */ สาธารณะ int[] splitYMD(วันที่สตริง){ 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 บูลีนคงที่ isLeapYear(int year) { ปีที่ส่งคืน >= gregorianCutoverYear ? ((ปี%4 == 0) && ((ปี%100 != 0) ||. (ปี%400 == 0))) : (ปี%4 == 0); } /** * วันที่บวก 1 วัน* @param ปี * @param เดือน * @param วัน * @return */ int คงที่ส่วนตัว [] addOneDay (ปี int, เดือน int, วัน int) { if (isLeapYear ( ปี )) { วัน ++; if ( วัน > DAYS_P_MONTH_LY [เดือน -1 ] ) { เดือน++; if(เดือน > 12){ year++; } day = 1; } }else{ day++; = 1; } วัน = 1; } } int[] 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 start * @param end * @return * @throws ParseException */ public static long countDay ( String start,String end){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); วันที่ startDate, endDate; = 0; ลอง { beginningDate= format.parse(begin); endDate= format.parse(end); day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000) catch (ParseException e) { e.printStackTrace(); } วันที่ส่งคืน; } /** * คำนวณวันที่แบบวนซ้ำ* @param beginningDate endDate * @param วัน * @return */ รายการคงที่สาธารณะ<String> getEveryday(String beginningDate, String endDate){ long days = countDay(beginDate, endDate); int[] ymd = splitYMD(beginDate); List<String> everyDays = new ArrayList<String>(); everyDays.add (beginDate); สำหรับ (int i = 0; i < วัน; i ++) { ymd = addOneDay(ymd[Y], ymd[M], ymd[D]); everyDays.add(formatYear(ymd[Y])+"-"+formatMonthDay(ymd[M])+"-"+formatMonthDay( ymd[D])); } ส่งคืนทุกวัน; } สาธารณะ static void main(String[] args) { List<String> list = AccountDate.getEveryday("2008-08-29", "2008-09-02"); สำหรับ (ผลลัพธ์สตริง : รายการ) { System.out.println(ผลลัพธ์);
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน