يصف المثال الموجود في هذه المقالة فئة معالجة الوقت والتاريخ JAVA، والتي تُستخدم بشكل أساسي للتنقل يوميًا بين تاريخين. شاركها مع الجميع لتكون مرجعا لك. التفاصيل هي كما يلي:
/*** * اسم الملف: AccountDate.java* * وقت الإنشاء: 18-11-2008** البريد الإلكتروني: **@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 { خاص 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 } /** * تحقق مما إذا كانت السنة التي تمثلها المعلمة التي تم تمريرها هي سنة كبيسة* @param year * @return */ public static boolean isLeapYear(int year) { return year >= gregorianCutoverYear ? ((year%4 == 0) && ((year%100 != 0) ||.(year%400 == 0))) : (year%4 == 0); Private static int[] addOneDay(int year, int Month, int day){ if(isLeapYear( year )){ day++; if(month > 12){ year++; = 1 } day = 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 begin * @param end * @return * @throws ParseException */ public static long countDay ( String begin,String end){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); = 0; حاول { beginDate= format.parse(begin); endDate= format.parse(end); Catch (ParseException e) { e.printStackTrace() } return day } /** * حساب التواريخ في حلقة* @param beginDate endDate * @param day * @return */ public static List<String> getEveryday(String beginDate, String endDate){ longdays = countDay(beginDate, endDate); int[] ymd = SplitYMD(beginDate); ArrayList<String>(); everyDays.add(beginDate); 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 (String result: list) { System.out.println(result } });
آمل أن تكون هذه المقالة مفيدة لبرمجة جافا للجميع.