JAVA时间日期处理类实例
程序员文章站
2024-03-04 12:47:53
本文实例讲述了java时间日期处理类,主要用来遍历两个日期之间的每一天。分享给大家供大家参考。具体如下:
/**
*
* 文 件 名: accountdat...
本文实例讲述了java时间日期处理类,主要用来遍历两个日期之间的每一天。分享给大家供大家参考。具体如下:
/** * * 文 件 名: accountdate.java * * 创建时间: 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; /** 闰年中每月天数 */ 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}; 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; } /** * 检查传入的参数代表的年份是否为闰年 * @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 ); } /** * 计算两个日期之间相隔的天数 * @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; } /** * 以循环的方式计算日期 * @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程序设计有所帮助。