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时间日期处理类,主要用来遍历两个日期之间的每一天。的更多相关文章
- java时间处理工具类--DateUtils
package com.hexiang.utils; /** * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ im ...
- JAVA时间Date工具类
package com.common.util; import java.text.DateFormat; import java.text.ParseException; import java.t ...
- Java获取上周,本周,本月,本年,开始结束时间 。日期工具类
由于获取日期经常会使用到,所有我自己写了一个工具类 1.基本上能用上的都写出来了,包括:1)获取当天的开始时间 2)获取当天的结束时间 3)获取昨天的开始时间 4)获取昨天的结束时间 5)获取明天的开 ...
- java工具类-日期工具类
1.获得时间戳 为了统一其他语言的如php和unix系统获取的时间戳是10位长度的,精确到秒. java时间戳长度是13位,精确到毫秒 我们获取时间戳需要相应处理. //获取当前时间戳,除以1000, ...
- java日期工具类DateUtil
一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮.那如何才能沉淀自己的”代码“呢?从自己编写util开始其实就是一个不错 ...
- 夯实Java基础(十四)——Java8新的日期处理类
1.前言 Java8之前处理日期一直是Java程序员比较头疼的问题,从Java 8之后,Java里面添加了许多的新特性,其中一个最常见也是最实用的便是日期处理的类——LocalDate.LocalDa ...
- Java的日期类和日期格式化类
日期类: Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); Cal ...
- JS 日期工具类-基于yDate
源码下载 前言:最近在用到JS日期操作时,发现有一些不方便,于是搜素了一些网上的资料,基于一个开源工具类-yDate 进行了个性化定制,封装成了一个日期工具类工具函数大概介绍:1.普通的日期操作2. ...
- java 获取两个日期相差的毫秒数
方法一可以使用date的getTime()方法来将当前日期格式的时间转换为毫秒数,进而相减. long systime = new Date().getTime();//当前系统时间 l ...
随机推荐
- (转载)最黑的黑客米特尼克:多次耍FBI 终被高手擒
(转载)http://bbs.chinabyte.com/thread-816847-1-1.html 凯文·米特尼克 50岁 第一个被FBI通缉的黑客,被称为“头号电脑骇客”,曾入侵北美防空指挥系统 ...
- Colour your Log4Net events in your RichTextBox zz
You’re most probably here because you have already read my article How to watch your log through you ...
- 检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码
#region 检测Office是否安装 ///<summary> /// 检测是否安装office ///</summary> ///<param name=" ...
- params数据来源和参数传递的一点小理解
今天是星期一,上次说的两个需求,解决了一个.在原来的页面增加了一个可以勾选的单选框用于完成,勾选对应的条件来渲染对应的页面,使用了简单的单选框radio_button来实现单选的提交,使用条件判断语句 ...
- 【解决】U盘装系统(Win7/Win8)& 装双系统
作为一名计算机的学生,不会装系统是不是会被笑掉大牙?!! .. 我一直就不太会(不是不会,是不熟练) .. 所以今天闲着没事,把旧电脑捣鼓起来 .. 主要是为了熟悉U盘装系统和装双系统的步骤 .. 基 ...
- xcode7下开发ios9等相关问题记录
1.默认使用HTTPS请求如果在Xcode 9之前使用的时http请求,那么在XCode 9上编译的App是不能联网的,会提示如下错误:App Transport Security has block ...
- 云之讯融合通讯开放平台_提供融合语音,短信,VoIP,视频和IM等通讯API及SDK。
云之讯融合通讯开放平台_提供融合语音,短信,VoIP,视频和IM等通讯API及SDK. undefined 全明星之极验证 - SendCloud undefined [转载]国内外几个主流的在线开发 ...
- springMVC源码浅析
因故,需要学习springmvc,现在demo已经跑起来.列文分析springmvc并简单对比struts2. springmvc的核心对象dispatcherServlet.struts2的核心对象 ...
- POJ 3922 A simple stone game
题目: E - A simple stone game Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d &am ...
- TREEVIEW拖拽对应修改目录
附件:http://files.cnblogs.com/xe2011/TreeView_Drag_Directory%E6%93%8D%E4%BD%9C.rar TREEVIEW拖拽对应修改目 ...