JAVA時間日期處理類實例
更新時間:2015年04月21日 12:03:50 作者:MagicYK
這篇文章主要介紹了JAVA時間日期處理類,可實現(xiàn)遍歷兩個日期之間的每一天的功能,涉及針對日期的常見操作技巧,需要的朋友可以參考下
本文實例講述了JAVA時間日期處理類,主要用來遍歷兩個日期之間的每一天。分享給大家供大家參考。具體如下:
/** * * 文 件 名: AccountDate.java * * 創(chuàng)建時間: 2008-11-18 * * 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 { private static transient int gregorianCutoverYear = 1582; /** 閏年中每月天數(shù) */ private static final int[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /** 非閏年中每月天數(shù) */ private static final int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /** 代表數(shù)組里的年、月、日 */ private static final int Y = 0, M = 1, D = 2; /** * 將代表日期的字符串分割為代表年月日的整形數(shù)組 * @param date * @return */ public static int[] splitYMD(String date){ date = date.replace("-", ""); int[] ymd = {0, 0, 0}; ymd[Y] = Integer.parseInt(date.substring(0, 4)); ymd[M] = Integer.parseInt(date.substring(4, 6)); ymd[D] = Integer.parseInt(date.substring(6, 8)); return ymd; } /** * 檢查傳入的參數(shù)代表的年份是否為閏年 * @param year * @return */ public static boolean isLeapYear(int year) { return year >= gregorianCutoverYear ? ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) : (year%4 == 0); } /** * 日期加1天 * @param year * @param month * @param day * @return */ private static int[] addOneDay(int year, int month, int day){ if(isLeapYear( year )){ day++; if( day > DAYS_P_MONTH_LY[month -1 ] ){ month++; if(month > 12){ year++; month = 1; } day = 1; } }else{ day++; if( day > DAYS_P_MONTH_CY[month -1 ] ){ month++; if(month > 12){ year++; month = 1; } day = 1; } } int[] ymd = {year, month, day}; 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 ); } /** * 計算兩個日期之間相隔的天數(shù) * @param begin * @param end * @return * @throws ParseException */ public static long countDay(String begin,String end){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date beginDate , endDate; long day = 0; try { beginDate= format.parse(begin); endDate= format.parse(end); day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); } catch (ParseException e) { e.printStackTrace(); } return day; } /** * 以循環(huán)的方式計算日期 * @param beginDate endDate * @param days * @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 (String result : list) { System.out.println(result); } } }
希望本文所述對大家的java程序設計有所幫助。
相關文章
Java調(diào)用SQL腳本執(zhí)行常用的方法示例
這篇文章主要給大家介紹了關于Java調(diào)用SQL腳本執(zhí)行常用的方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-04-04JAVA 中實現(xiàn)整句漢字拆分、轉(zhuǎn)換為ASCII實例詳解
這篇文章主要介紹了JAVA 中實現(xiàn)整句漢字拆分、轉(zhuǎn)換為ASCII實例詳解的相關資料,需要的朋友可以參考下2017-04-04