⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mydate.java

📁 STRUTS图书馆管理系统, 平台为 struts1.2 jsp2.0 servlet2.4 jdk1.5 tomcat5.5 jstl1.1
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*<%--////////////////////////////////////////////////////GTON原创作品-Struts图书馆管理系统//////////////////////////////////////////////////////////////
////////////所用技术:jsp2.0+servlet2.4+jstl1.1+Struts1.2+sqlserver2000+tomcat5.5/////////////////////////////////////
/////////////////////////////////////////////////////专业制作网站 专业制作毕业设计////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////QQ:27612285//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////Mail:punkwang@126.com////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////WEB:www.98202.com www.630cn.com//////////////////////////////////////////////////////
////////////////////////////////////////////////////qq群:20665503////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////求高薪工作一个有意者联系本人/////////////////////////////////////////////////////////
////////////////////////////////////////////////////Phone:010-81110277(王先生)///////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--%>
<%--接 毕业设计业务 网站业务 商业网站 个人网站 商城系统 企业主页 JSP ASP.net PHP !!! 

业务种类 

网站业务: 商业网站 个人网站 商城系统 企业主页 等中小型网站(asp, jsp ,php ,asp.net) 

毕业设计业务:java(j2ee j2se) vb delphi php .net等毕设业务 

模块业务:各种中小型模块 java .net 

如有需要 价格细谈 QQ:27612285 

我的网站 
HTTP://www.98202.com 
HTTP://www.do3w.com 
HTTP://www.201cn.com 
HTTP://www.630cn.com--%>
*/package com.gton.util;

import java.text.*;
import java.util.*;
import java.util.logging.SimpleFormatter;

public class MyDate {
    public MyDate() {
    }

    public static String getDate() {
        SimpleDateFormat lFormat;
        Calendar MyDate = Calendar.getInstance();
        MyDate.setTime(new java.util.Date());
        java.util.Date date = MyDate.getTime();
        lFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        String gRtnStr = lFormat.format(date);
        return gRtnStr;
    }

    /** 注意格里历和儒略历交接时的日期差别 */
    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) {
                    year--;
                    month = 12;
                }
                day = DAYS_P_MONTH_LY[month - 1];
            }
        } else {
            day--;
            if (day <= 0) {
                month--;
                if (month < 1) {
                    year--;
                    month = 12;
                }
                day = DAYS_P_MONTH_CY[month - 1];
            }
        }
        int[] ymd = {
                    year, month, day};
        return ymd;
    }

    /**
     * 以循环的方式计算日期减法
     * @param date
     * @param days
     * @return
     */
    public String reduceDaysByLoop(String date, int days) {
        validate(date);
        int[] ymd = splitYMD(date);
        for (int i = 0; i < days; i++) {
            ymd = reduceOneDay(ymd[Y], ymd[M], ymd[D]);
        }
        return formatYear(ymd[Y]) +
                formatMonthDay(ymd[M]) +
                formatMonthDay(ymd[D]);
    }

    /**
     * 指定日期加上指定的天数的操作
     * @param date
     * @param days
     * @return
     * @throws IllegalArgumentException
     */
    public String addDays(Date date, int days) throws IllegalArgumentException {
        return addDays(formatDate(date), days);
    }

    /**
     * 指定日期加上指定的天数的操作
     * @param date
     * @param days
     * @return
     * @throws IllegalArgumentException
     */
    public String addDays(String date, int days) throws
            IllegalArgumentException {

        validate(date);
        ymd = splitYMD(date);

        if (isLeapYear(ymd[Y])) {
            ymd[D] += days;
            if (ymd[D] > DAYS_P_MONTH_LY[ymd[M] - 1]) {
                ymd[M]++;
                ymd[D] = ymd[D] - DAYS_P_MONTH_LY[ymd[M] - 1 - 1];
                if (ymd[M] > 12) {
                    ymd[M] -= 12;
                    ymd[Y]++;
                }
                if (ymd[D] > DAYS_P_MONTH_LY[ymd[M] - 1]) {
                    addDays(formatYear(ymd[Y]) +
                            formatMonthDay(ymd[M]) +
                            formatMonthDay(DAYS_P_MONTH_LY[ymd[M] - 1]),
                            ymd[D] - DAYS_P_MONTH_LY[ymd[M] - 1]);
                }
            }
        } else {
            ymd[D] += days;
            if (ymd[D] > DAYS_P_MONTH_CY[ymd[M] - 1]) {
                ymd[M]++;
                ymd[D] = ymd[D] - DAYS_P_MONTH_CY[ymd[M] - 1 - 1];
                if (ymd[M] > 12) {
                    ymd[M] -= 12;
                    ymd[Y]++;
                }
                if (ymd[D] > DAYS_P_MONTH_CY[ymd[M] - 1]) {
                    addDays(formatYear(ymd[Y]) +
                            formatMonthDay(ymd[M]) +
                            formatMonthDay(DAYS_P_MONTH_CY[ymd[M] - 1]),
                            ymd[D] - DAYS_P_MONTH_CY[ymd[M] - 1]);
                }
            }
        }
        return formatYear(ymd[Y]) +
                formatMonthDay(ymd[M]) +
                formatMonthDay(ymd[D]);
    }

    /**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -