网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  一些无聊的代码之一:java中的日期计算     
  文章作者:未知  文章来源:水木森林  
  查看:94次  录入:管理员--2007-11-17  
 
/* * datecalculate.java , created on 2005-3-18 * copyright 2005 aaa information technology co.ltd. all rights reserved. *  * 作成日期: 2005-3-18 * 修改履历:  *  */package com.bjb.xyh.util;

import java.text.decimalformat;//import java.text.parseexception;import java.text.simpledateformat;import java.util.calendar;import java.util.date;

/** * 类描述:自己实现的日期计算类,可以自由扩展 * @author xieyh lamp5w@yahoo.com.cn * @version  build 2005-3-18 *  */public class datecalculate {        /** 注意格里历和儒略历交接时的日期差别 */    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;        /** 参与运算用 */    private int[] ymd = null;

    /**     * 检查传入的参数是否合法的日期     * @param date     * @throws illegalargumentexception     */    public static void validate(string date)throws illegalargumentexception{                int[] ymd = splitymd( date );                if( ymd[m] == 0 || ymd[m] > 12 ){            throw new illegalargumentexception("月份数值错误");        }                if( true == isleapyear( ymd[0] ) ){            if( ymd[d] == 0 || ymd[d] > days_p_month_ly[ymd[m] -1 ] ){                throw new illegalargumentexception("日期数值错误");            }        }else{            if( ymd[d] == 0 || ymd[d] > days_p_month_cy[ymd[m] -1 ] ){                throw new illegalargumentexception("日期数值错误");            }        }    }

    /**     * 检查传入的参数代表的年份是否为闰年     * @param year     * @return     */    public static boolean isleapyear(int year) {        return year >= gregoriancutoveryear ?            ((year%4 == 0) && ((year%100 != 0) ||                     (year%400 == 0))) : // gregorian            (year%4 == 0); // julian    }        /**     * 日期加1天,注意这里没有考虑儒略历和格里历交接时相差的10天     * @param year     * @param month     * @param day     * @return     */    private 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 date     * @param days     * @return     */    public string adddaysbyloop(string date, int days){        validate(date);        int[] ymd = splitymd( date );        for(int i = 0; i < days; i++){            ymd = addoneday(ymd[y], ymd[m], ymd[d]);        }        return formatyear(ymd[y])+       formatmonthday(ymd[m])+       formatmonthday(ymd[d]);    }        /**     * 日期减1天,注意这里没有考虑儒略历和格里历交接时相差的10天     * @param year     * @param month     * @param day     * @return     */    private int[] reduceoneday(int year, int month, int day){        if(isleapyear( year )){            day--;            if( day <= 0 ){                month--;                if(month < 1){              
 
 
上一篇: 一个最简单的 javabeanmaker(原创)    下一篇: 一种高效的javabea分页for sqlserver
  相关文档
java web start 1.0.1_01的安装向导(二) 11-17
java虚拟机的研究与实现 11-17
resin服务器平台介绍 11-17
邮件发送程序(可以同时发给多个地址、可以带附件) 11-17
urls,uris,proxies和passwords 解析 11-17
model view controller 与 observer 11-17
javascript实例教程(20) ole automation(7) 11-16
java 程序设计基础之异常处理部分 11-17
使用ejb 3.0简化企业级java开发一 11-17
struts用户和开发指南(前言之一) 11-17
对j2ee项目的一些体会 11-16
java 理论与实践: jdk 5.0 中更灵活、更具可伸缩性的锁定机制 11-17
定制 bugzilla 进行项目管理 11-17
驯服tiger之访问环境变量和调用子进程 11-16
在java中运行其他程序详解 11-17
编写跨平台java程序注意事项 11-17
嵌入式java的应用实例 11-17
java新手必看-hello world 攻略 11-16
java新手入门的30个基本概念 11-16
java入门(7)java流程控制 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息