`
wangmengbk
  • 浏览: 288816 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

根据具体的天数返回日期

阅读更多
package com.wang.struts.util;

import java.util.Date;
import java.util.Scanner;
import java.text.SimpleDateFormat;

public class DateUtil {

  
    public String getBackDate(int backDay) {
        String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        String date = "";
        int year = Integer.parseInt((today.split("-"))[0]);
        int month = Integer.parseInt((today.split("-"))[1]);
        int day = Integer.parseInt((today.split("-"))[2]);
        if (day - (backDay - 1) > 0) {
            return date + year + "-" + month + "-" + (day - (backDay - 1));
        } else {
            return date
                    + getBackYear(year, month)
                    + "-"
                    + getLastMonth(month)
                    + "-"
                    + (getMonthDays(year, getLastMonth(month)) - (backDay - 1 - day));
        }
    }

  
    public String getForwardDate(int forwardDay) {
        String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        int year = Integer.parseInt((today.split("-"))[0]);
        int month = Integer.parseInt((today.split("-"))[1]);
        int day = Integer.parseInt((today.split("-"))[2]);
        if (day + forwardDay <= 28) {
            return "" + year + "-" + month + "-" + (day + forwardDay);
        } else {
            switch (month) {
            case 2:
                return "" + getForwardYear(year, month) + "-"
                        + getNextMonth(month) + "-"
                        + (forwardDay - (getMonthDays(year, month) - day));

            case 4:
                if (day + forwardDay <= 30) {
                    return "" + year + "-" + month + "-" + (day + forwardDay);
                } else {
                    return "" + getForwardYear(year, month) + "-"
                            + getNextMonth(month) + "-"
                            + (forwardDay - (getMonthDays(year, month) - day));
                }
            case 6:
                if (day + forwardDay <= 30) {
                    return "" + year + "-" + month + "-" + (day + forwardDay);
                } else {
                    return "" + getForwardYear(year, month) + "-"
                            + getNextMonth(month) + "-"
                            + (forwardDay - (getMonthDays(year, month) - day));
                }

            case 9:
                if (day + forwardDay <= 30) {
                    return "" + year + "-" + month + "-" + (day + forwardDay);
                } else {
                    return "" + getForwardYear(year, month) + "-"
                            + getNextMonth(month) + "-"
                            + (forwardDay - (getMonthDays(year, month) - day));
                }

            case 11:
                if (day + forwardDay <= 30) {
                    return "" + year + "-" + month + "-" + (day + forwardDay);
                } else {
                    return "" + getForwardYear(year, month) + "-"
                            + getNextMonth(month) + "-"
                            + (forwardDay - (getMonthDays(year, month) - day));
                }

            default:
                if (day + forwardDay <= 31) {
                    return "" + year + "-" + month + "-" + (day + forwardDay);
                } else {
                    return "" + getForwardYear(year, month) + "-"
                            + getNextMonth(month) + "-"
                            + (forwardDay - (getMonthDays(year, month) - day));
                }
            }
        }
    }

  
    public boolean isRn(int year) {
        if (year % 4 == 0 && !(year % 100 == 0 && year % 400 != 0))
            return true;
        return false;
    }

  
    public int getLastMonth(int month) {
        if (month != 1)
            return month - 1;
        else
            return 12;
    }

  
    public int getNextMonth(int month) {
        if (month != 12)
            return month + 1;
        else
            return 1;
    }

  
    public int getBackYear(int year, int month) {
        if (getLastMonth(month) == 12)
            return year - 1;
        else
            return year;
    }

  
    public int getForwardYear(int year, int month) {
        if (getNextMonth(month) == 1)
            return year + 1;
        else
            return year;
    }

  
    public int getMonthDays(int year, int month) {
        int lastMonthDays = 0;
        switch (month) {
        case 2:
            if (isRn(year))
                lastMonthDays = 28;
            else
                lastMonthDays = 29;
            break;
        case 4:
            lastMonthDays = 30;
            break;
        case 6:
            lastMonthDays = 30;
            break;
        case 9:
            lastMonthDays = 30;
            break;
        case 11:
            lastMonthDays = 30;
            break;
        default:
            lastMonthDays = 31;
        }
        return lastMonthDays;
    }

    // private int d = 0 ;
    // public int geDay(int year,int month,int backDay){
    // if (getMonthDays(year,month) - (backDay - 1) > 0) {
    // d = getMonthDays(year,month) - (backDay - 1);
    // return d;
    // }else{
    // geDay(year,month,backDay);
    //         
    // }
    // return d;
    // }

    public static void main(String[] args) {
        DateUtil du = new DateUtil();
        // for (int m = 1; m <= 12; m++) {
        // System.out.println("1900年" + m + "月的天数" + du.getMonthDays(1900, m));
        // }
        int sign = 1;
        Scanner sc = new Scanner(System.in);
        while (sign != 0) {
            System.out.print("输入一个天数:");
            sign = sc.nextInt();
            System.out.println(du.getForwardDate(sign));
        }
        System.out.println("程序退出");
    }
}


分享到:
评论

相关推荐

    Java日期工具类

    Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 ...23、根据传入的日期返回前一季度字符串 24、根据传入的日期返回相应的季度 .......

    js 时间计算(加减天数、返回当前时间后一个星期的日期,返回格式yyyy-MM-dd)

    NULL 博文链接:https://literary-fly.iteye.com/blog/949495

    oracle返回相差的天数

    用ORACLE实现的返回相差的天数,能够方便的解决日期类型的问题

    Java中封装的全局日期处理工具类

    增加日期的天数。失败返回null。 增加日期的小时。失败返回null。 增加日期的分钟。失败返回null。 增加日期的秒钟。失败返回null。 获取日期的年份。失败返回0。 获取日期的月份。失败返回0。 获取...

    js_阳历日期转农历日期_日期转化周几等

    2 返回农历year年闰月的天数(如果没有闰月则返回0) 3 返回农历year年的总天数 4 返回农历year年month月的天数 5 农历日期的中文字符串 6 返回某年的第n个节气为第几日 7 获取阳历某个月份有多少天 8 获取指定...

    Javascript 日期对象Date扩展

    解析常用的中文日期并返回日期对象。 add--日期加减操作。[注:此函数在上传时还存在一个BUG。请下载后把此函数内的第一行"var regExp = /^\d+$/;" 改为 "var regExp = /^([+-])?\d+$/;", 要不然就做不了减法。] ...

    计算两个时间之间的年数、月数、天数等

    计算两个时间之间的年数、月数、天数、时、分、秒,计算两个时间之间的年数、月数、天数、时、分、秒

    日期工具类

    在指定的日期上增加天数 ,7.在指定的日期上减去天数 ,8.为时间增加分钟,9.为时间减去分钟 ,10两个日期大小比较,11.判断时间是否超过一定的小时数 ,12获取当前日期往后一定的年数,13.计算两个日期之间相差的...

    java获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)、获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)

    java获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)、获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)、指定天的开始和结束日期、返回某个日期前几天的日期并转换成字符串

    用java实现的一个将公历日期转换为农历的组件程序

    接着,根据农历年份和月份,计算出该月份的天数和第一天的日期。如果需要,将公历日期调整为该月份的正确日期。最后,根据农历年份、月份和日期,创建一个对应的Calendar对象,并返回该对象作为结果。

    php获取给定日期相差天数的方法分析

    主要介绍了php获取给定日期相差天数的方法,结合具体实例形式分析了2种日期相差天数的计算方法,涉及php日期字符串转换的相关操作技巧,需要的朋友可以参考下

    日期相关工具类,非常实用可靠。经常在项目中使用的资源。

    4. 在原日期的基础上加上增加的天数 5. 比较连个日期的大小,只有年月日参加比较 6. 比较连个日期的大小,只有年月日参加比较 7. 返回近12个月的年月(含给定月) 8. 获取指定年份日历 9. 获取指定年指定周的开始...

    阴历或农历日期处理JS

    返回0; y年m月的总天数; 算出农历,传入日期物件,传回农历日期物件(.year .month .day .isLeap .yearCyl .dayCyl .monCyl); y年某m+1月的天数 传回干支, 0=甲子 中文日期 中文月份 更多资料可登录:...

    处理跟日期或时间有关的运算的函数汇总

    把符合日期格式的字符串转换为日期类型;把符合日期格式的字符串转换为 日期类型; 获取当前时间的制定格式;两个日期相减;...返回日期的天;返回日期的月;返回日期的年;计算两个日期的相差的天数

    DateHandler.java日期处理类Java文件下载.rar

    与现在的日期对比 得到天数、计算两个日期间相隔的日子、获取今天的日期的字符串、获取当前月份,* @return 返回字符串 格式:两位数、获取昨天的日期的字符串等,还可以计算员工的工作天数,如在使用期和离职期该...

    Java - DateUtil 日期时间转换工具类

    在某个时间基础上,往前推或者往后推几个年,返回[年-月-日]格式的日期;判断时间是否在时间段内;获取某年最后一天日期;在原日期的基础上增加/减少小时数;获取年份中的天数;如果当前时间是节假日,返回下一个...

    14.第十四章 函数进阶.txt

    计算日期A和日期B相差天数,A小于B且A与B不在同一年时,把天数分为三段: (1)A到A所在年份12月31日的天数; (2)A所在年份后整年部分(A、B在相邻年份时无整年部分); (3)B所在年份1月1日到B的天数。 若A...

    日期操作工具类

    * 得到当前时间指定天数之前几天的日期 * @param days 指定的天数 * @return */ public static Date getFormerDateOfDays(int days) /** * 得到当前时间之前几个小时的日期 * @param hours 指定的...

    3_指针_

    Julian历法是用年以及这一年中的第几天来表示日期。设计一个函数,将Julian历法表示的日期转换成月和日,如Mar 8(注意闰年的问题)。...如果参数有错,如天数为第370天,返回NULL指针,此使屏幕无打印输出。

    最全Java常用日期处理工具类

    在日期上增加天数 6.在日期上增加n分钟 7.两个时间相差距离多少天多少小时多少分多少秒 8.按默认格式的字符串距离今天的天数 9.比较两个时间的大小 HH:mm:ss 10.按用户格式字符串距离今天的天数 11.cron...

Global site tag (gtag.js) - Google Analytics