JAVA时间日期处理类实例

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • Java实现的日期处理类完整实例

    本文实例讲述了Java实现的日期处理类.分享给大家供大家参考,具体如下: 开发中常常要使用日期,先小结如下,以备后用. import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class FormatTime { private final static SimpleDateFormat sdf=new

  • Java使用String类格式化当前日期实现代码

    在输出日期信息时,经常需要输出不同格式的日期格式,本实例中介绍了String字符串类中的日期格式化方法,实例使用不同的方式输出String类的日期格式参数值,组合这些值可以实现特殊格式的日期字符串. 思路如下:比如要输出月份的英文简称,通过String类的format()方法,第一个参数指定语言环境为Locale.US,默认为数字,第二个参数即为%tb表示月份简称,第三个参数则为Date()类对象. 代码如下: 复制代码 代码如下: import java.util.Date;import ja

  • Java 中DateUtils日期工具类的实例详解

    Java 中DateUtils日期工具类的实例详解 介绍 在java中队日期类型的处理并不方便,通常都需要借助java.text.SimpleDateFormat类来实现日期类型 和字符串类型之间的转换,但是在jdk1.8之后有所改善,jdk1.7以及之前的版本处理日期类型并不方便, 可以借助Joda Time组件来处理,尤其是日期类型的一些数学操作就更是不方便. java代码 /** * * 日期工具类 java对日期的操作一直都很不理想,直到jdk1.8之后才有了本质的改变. * 如果使用的

  • java自定义日期转化类示例

    java自定义日期转化类 复制代码 代码如下: import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; import org.apache.commons.beanutils.Converter; /** * 自定义 java.util.Date日期转换器 *  *  */public class MyDateConve

  • java实现字符串和日期类型相互转换的方法

    本文实例讲述了java实现字符串和日期类型相互转换的方法.分享给大家供大家参考,具体如下: Date inDate = new Date(); //获取当前日期 //建立一个一定格式的 SimpleDateFormat SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String date = f.format(inDate); //将Date转化为字符串 System.out.println(date

  • java日期操作工具类(获取指定日期、日期转换、相隔天数)

    本文实例为大家分享了java日期操作工具类,获取指定日期前一天.后一天:日期转换:两个日期之间相隔天数等工具类,供大家参考,具体内容如下 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class

  • java日期工具类实例分享

    复制代码 代码如下: /** * 日期工具类 * 默认使用 "yyyy-MM-dd HH:mm:ss" 格式化日期 */public final class DateUtils {/*** 英文简写(默认)如:2010-12-01*/public static String FORMAT_SHORT = "yyyy-MM-dd";/*** 英文全称  如:2010-12-01 23:15:06*/public static String FORMAT_LONG =

  • Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

    实现代码一: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String str=&

  • java日期处理工具类

    本文针对日期处理进行学习使用,主要分为两部分,下面为大家具体介绍一下 第一部分:日期处理基础知识 Date 类 作用:最主要的作用就是获得当前时间 将日期转换为标准格式 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str = sdf.format(date); System.out.println("2015-10-16 1

  • Java实现将数字日期翻译成英文单词的工具类实例

    本文实例讲述了Java实现将数字日期翻译成英文单词的工具类.分享给大家供大家参考,具体如下: package com.sunyard.etp.ag.util; import java.math.BigDecimal; import java.util.Arrays; public class DateEngUtil { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated meth

  • 实例解析Java日期格式工具类DateUtil.java

    话不多说,请看代码: DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.util.Date; import pers.kangxu.datautils.common.exception.DefineException; /** * * <b> * 处理日期 工具类 * </b> * @author kangxu * */ public c

随机推荐