博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。
阅读量:6114 次
发布时间:2019-06-21

本文共 3957 字,大约阅读时间需要 13 分钟。

/***    *  文 件 名: 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
getEveryday(String beginDate , String endDate){ long days = countDay(beginDate, endDate); int[] ymd = splitYMD( beginDate ); List
everyDays = new ArrayList
(); 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
list = AccountDate.getEveryday("2008-08-29", "2008-09-02"); for (String result : list) { System.out.println(result); } }}

 

转载于:https://www.cnblogs.com/magicyk/p/4443451.html

你可能感兴趣的文章
fabric上下文管理器(context mangers)
查看>>
JQuery-EasyUI Datagrid数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
查看>>
并发和并行的区别
查看>>
SWATCH
查看>>
JSP中行的查询
查看>>
Adhesive框架系列文章--内存队列服务模块使用和实现
查看>>
Ruby学习笔记-循环与选择结构
查看>>
整数的转换成2进制有多少个1
查看>>
在SQL Server 的使用过程中,发现几个很有用,但不太常用
查看>>
[转]用Mochiweb打造百万级Comet应用,第三部分
查看>>
初级程序员的学习方法见解
查看>>
swap配置小结
查看>>
[原创]FineUI秘密花园(八) — 下拉列表控件
查看>>
让你的Rt.jar能够包含元信息
查看>>
单元测试(H2等)和持续集成(Hudson)实战简介
查看>>
CSS小技巧二:导航中鼠标经过变换文字
查看>>
Android 读取文件内容
查看>>
C#方法参数传递-引用参数ref关键字
查看>>
【英语天天读】活在当下
查看>>
E-R图向关系模型的转换规则
查看>>