/**
*
*  文 件 名: 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);}}}

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

JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。相关推荐

  1. R语言筛选dataframe中两个日期之外的数据行,介于两个日期(包括两个日期)之间的数据行

    R语言筛选dataframe中两个日期之外的数据行,介于两个日期(包括两个日期)之间的数据行 目录

  2. java遍历两个时间戳之间的每一天

    java遍历两个时间戳之间的每一天 一度为快 时间戳 开始时间戳:1571328000 结束时间戳:1571500800 结果 关键代码 private static void getDays(lon ...

  3. Shell--计算两个日期的相差天数及输出这两个日期内的所有日期【工作笔记】

    定义脚本 vim calculateDate.sh如下: #!/bin/sh startDate="20210801" endDate="20210826" e ...

  4. JAVA时间日期处理类,主要用来遍历两个日期之间的每一天

    import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; ...

  5. Java时间处理工具类(详细)

    目录 第一类: 第二类: 第一类: package com.chinamcloud.spiderMember.util;import org.apache.commons.lang3.StringUt ...

  6. 非常强大的java时间处理工具类!

    xk-time 是时间转换,时间计算,时间格式化,时间解析,日历,时间cron表达式和时间NLP等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Da ...

  7. 正方形类的定义,比较两个日期的大小并计算其间隔天数

    实验项目5:常用实用类 一.实验目的和要求 学会覆盖Object类中常用方法: 学会使用Math类中常用方法: 学会字符串的常用操作: 学会常用日期类的使用方法. 二.实验内容与步骤 1.定义一个名为 ...

  8. java 计算两个日期相差月数_Java简单计算两个日期月数差的方法

    本文实例讲述了Java简单计算两个日期月数差的方法.分享给大家供大家参考,具体如下: /** * 获取两个日期相差的月数 * @param d1 较大的日期 * @param d2 较小的日期 * @ ...

  9. java 日期只计算年月日大小_Java 计算两个日期相差多少年月日

    JDK7及以前的版本,计算两个日期相差的年月日比较麻烦. JDK8新出的日期类,提供了比较简单的实现方法. /*** 计算2个日期之间相差的 相差多少年月日 * 比如:2011-02-02 到 201 ...

最新文章

  1. Channel延续篇
  2. 实践周java基础软件开发app之五子棋
  3. 【项目实战】基于python的申请评分卡模型
  4. FPGA 资料搜集记录
  5. Layui --- [Mar]给渲染后的表格加CSS样式
  6. 0pencv——图像腐蚀
  7. 小白也能懂的 Nacos 服务模型介绍
  8. c语言字符型计算器,求用c语言编程四则混合运算计算器?
  9. 【再来一套网站程序】kfguan网整站程序下载
  10. 集成学习中的随机森林
  11. HDU ACM 1224 Free DIY Tour (SPFA)
  12. AndroidStudio安卓原生开发_Activity的启动方法_3种activity的启动方法_显示启动Activity---Android原生开发工作笔记82
  13. SSM框架之Spring MVC(一)
  14. Unix下oracle备份,Linux下Oracle备份与数据迁移
  15. python安装包下载及安装(超详细)
  16. 华为鲲鹏云服务技术与运用 部分习题
  17. 关于函数不定积分的方法总结
  18. 帝国html5图片站模板,html5响应式自适应帝国CMS整站模板源码瀑布流文章图片资讯文章站...
  19. vs2013(所有版本)-产品密钥
  20. 微信小程序调用指纹验证

热门文章

  1. C/C++难题的高赞回答「中文版」,帮你整理好了
  2. 只用CPU开发自动驾驶轮船,他们居然做到了
  3. 一文看懂当红Serverless:为何AWS、阿里云和腾讯云都在发力「无服务器架构」
  4. Zoom重金并购25人安全初创公司,市值一夜大涨23亿美元
  5. Android进阶(六)Binder机制
  6. SQL on Linux Run on Docker
  7. ApplicationIdle
  8. android binder
  9. jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容
  10. MediaWiki 1.19.2 发布 - 开源 Wiki 系统