`
wangmengbk
  • 浏览: 289407 次
  • 性别: 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 获取指定...

    ABAP日期函数(求月末日,第几周,search help 只显示年月) 使用方法实例

    在实际应用中,日期函数的使用非常广泛,例如计算两个日期间的工作天数、获取当前月份的第一天和最后一天、计算日期所在的周数、弹出选择周的对话框等。 1. 计算两个日期间的工作天数 在实际应用中,我们需要计算...

    Excel2021,计算两个日期之间工作日的天数.docx

    * 如果起始日期或终止日期为空或非日期型数据, NETWORKDAYS 函数将返回错误值。 * NETWORKDAYS 函数可以与其他函数结合使用,例如,使用 TODAY 函数获取当前日期,并与 NETWORKDAYS 函数结合计算当前日期到某个日期...

    MySQL日期查询[定义].pdf

    * `DAYOFWEEK()`: 返回日期的星期索引,范围从 1 到 7,分别对应星期天、星期一、星期二、星期三、星期四、星期五和星期六。 * `WEEKDAY()`: 返回日期的星期索引,范围从 0 到 6,分别对应星期一、星期二、星期三、...

    Javascript 日期对象Date扩展

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

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

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

    头歌python本月天数.doc

    头歌python本月天数 头歌Python本月天数计算教程 一、引言 在Python编程中,经常需要处理与时间相关的任务,包括日期的...该方法返回一个表示当前日期的datetime.date对象。 python from datetime import date tod

    Excel日期和时间函数.docx

    该函数可以根据指定的开始日期和结束日期返回按每年 360 天计算的天数差值。 六、EDATE 函数 EDATE 函数用于返回在开始日期之前或之后指定月数的某个日期的系列数。其语法为:EDATE(开始日期、月数)。该函数可以...

    日期工具类

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

    Mysql日期和时间函数大全[归类].pdf

    * DAYOFWEEK(date):返回日期的星期索引(0=星期一,1=星期二,..., 6=星期天)。 * DAYOFMONTH(date):返回日期的月份中日期,在1到31范围内。 * DAYOFYEAR(date):返回日期在一年中的日数,在1到366范围内。 * ...

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

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

    mysql的日期和时间函数.pdf

    DAYOFMONTH() 函数返回日期或日期时间表达式的月份中的天数,范围从 1 到 31。 示例:SELECT DAYOFMONTH('1998-02-03'); -&gt; 3 5. DAYOFYEAR() 函数 DAYOFYEAR() 函数返回日期或日期时间表达式是一年中的天数,...

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

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

    Excel日期时间函数.docx

    DAY 函数用于返回用序列号表示的某日期的天数,用整数 1 到 31 表示。语法为 DAY(serial_number),其中 serial_number 是要查找的天数日期。 例如,公式“=DAY("2021/1/27")”返回 27,=DAY(35825) 返回 30,=DAY...

    Excel函数应用教程:日期时间函数.pdf

    DAY函数:DAY函数的用途是返回用序列号表示的某日期的天数,用整数1到31表示。它的语法是DAY(serial_number),其中serial_number是要查找的天数日期,它有多种输入方式:带引号的文本串、序列号、其他公式或函数的...

Global site tag (gtag.js) - Google Analytics