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);}}}
转载于:https://www.cnblogs.com/magicyk/p/4443451.html
JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。相关推荐
- R语言筛选dataframe中两个日期之外的数据行,介于两个日期(包括两个日期)之间的数据行
R语言筛选dataframe中两个日期之外的数据行,介于两个日期(包括两个日期)之间的数据行 目录
- java遍历两个时间戳之间的每一天
java遍历两个时间戳之间的每一天 一度为快 时间戳 开始时间戳:1571328000 结束时间戳:1571500800 结果 关键代码 private static void getDays(lon ...
- Shell--计算两个日期的相差天数及输出这两个日期内的所有日期【工作笔记】
定义脚本 vim calculateDate.sh如下: #!/bin/sh startDate="20210801" endDate="20210826" e ...
- JAVA时间日期处理类,主要用来遍历两个日期之间的每一天
import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; ...
- Java时间处理工具类(详细)
目录 第一类: 第二类: 第一类: package com.chinamcloud.spiderMember.util;import org.apache.commons.lang3.StringUt ...
- 非常强大的java时间处理工具类!
xk-time 是时间转换,时间计算,时间格式化,时间解析,日历,时间cron表达式和时间NLP等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Da ...
- 正方形类的定义,比较两个日期的大小并计算其间隔天数
实验项目5:常用实用类 一.实验目的和要求 学会覆盖Object类中常用方法: 学会使用Math类中常用方法: 学会字符串的常用操作: 学会常用日期类的使用方法. 二.实验内容与步骤 1.定义一个名为 ...
- java 计算两个日期相差月数_Java简单计算两个日期月数差的方法
本文实例讲述了Java简单计算两个日期月数差的方法.分享给大家供大家参考,具体如下: /** * 获取两个日期相差的月数 * @param d1 较大的日期 * @param d2 较小的日期 * @ ...
- java 日期只计算年月日大小_Java 计算两个日期相差多少年月日
JDK7及以前的版本,计算两个日期相差的年月日比较麻烦. JDK8新出的日期类,提供了比较简单的实现方法. /*** 计算2个日期之间相差的 相差多少年月日 * 比如:2011-02-02 到 201 ...
最新文章
- Channel延续篇
- 实践周java基础软件开发app之五子棋
- 【项目实战】基于python的申请评分卡模型
- FPGA 资料搜集记录
- Layui --- [Mar]给渲染后的表格加CSS样式
- 0pencv——图像腐蚀
- 小白也能懂的 Nacos 服务模型介绍
- c语言字符型计算器,求用c语言编程四则混合运算计算器?
- 【再来一套网站程序】kfguan网整站程序下载
- 集成学习中的随机森林
- HDU ACM 1224 Free DIY Tour (SPFA)
- AndroidStudio安卓原生开发_Activity的启动方法_3种activity的启动方法_显示启动Activity---Android原生开发工作笔记82
- SSM框架之Spring MVC(一)
- Unix下oracle备份,Linux下Oracle备份与数据迁移
- python安装包下载及安装(超详细)
- 华为鲲鹏云服务技术与运用 部分习题
- 关于函数不定积分的方法总结
- 帝国html5图片站模板,html5响应式自适应帝国CMS整站模板源码瀑布流文章图片资讯文章站...
- vs2013(所有版本)-产品密钥
- 微信小程序调用指纹验证