`
wangmengbk
  • 浏览: 292308 次
  • 性别: 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("程序退出");
    }
}


分享到:
评论

相关推荐

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

    返回当前时间后一个星期的日期,可以使用`setDate()`结合一周的天数7来完成: ```javascript now.setDate(now.getDate() + 7); ``` 然而,JavaScript的默认格式并非"yyyy-MM-dd",而是类似于"Mon Sep 28 2021 15:30...

    天数日期计算转换器MFC

    3. **日期转换**:转换天数为具体的日期,比如用户输入一个天数,程序可以返回对应的日期。 4. **错误处理**:确保输入的有效性,如检查日期格式是否正确,天数是否超出范围等。 在MFC中,用户界面设计通常通过...

    Java日期工具类

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

    日期天数计算

    例如,我们可以创建`datetime`对象表示具体的日期和时间,然后使用`timedelta`对象来计算两个日期之间的差值。 ```python import datetime # 定义两个日期 date1 = datetime.datetime(2022, 1, 1) date2 = ...

    C#根据日期计算星期几,根据月份计算天数

    本教程将深入探讨如何根据日期计算星期几以及如何根据月份计算天数。这些功能在日历应用、报表生成、数据分析等场景中非常实用。 首先,我们需要了解C#中的`DateTime`结构。`DateTime`是.NET框架提供的一个类型,...

    字符串转换、天数到日期的转换函数组

    因此,转换函数会接收一个整数参数,代表天数,然后返回对应的日期字符串,格式可能如"YYYY-MM-DD"。 转换函数通常包含以下步骤: 1. 初始化一个日期结构,如C++中的`tm`结构体,其成员表示年、月、日等。 2. 将...

    计算日期相差天数

    描述中的"输入总共天数"可能意味着用户需要提供一个天数,然后程序返回对应的结束日期。在这种情况下,我们需要加上开始日期: ```csharp DateTime startDate = new DateTime(2022, 1, 1); int totalDays = 30; ...

    VB6.0 两个日期差,天数差

    - 当日期顺序交换时(即date2在date1之前),DateDiff会返回负数,表示date1在date2之后的天数。 - 如果日期差跨越了闰年的2月29日,那么计算结果会正确地包含闰年天数。 - 在使用DateDiff时,确保提供的日期格式...

    oracle返回相差的天数

    本文将围绕如何使用Oracle来实现返回两个日期相差的天数这一功能展开讨论。 ### 一、问题背景 在业务场景中,经常会遇到需要计算两个日期之间间隔天数的情况,例如计算员工工龄、统计项目执行周期等。通过Oracle...

    oracle_日期_加减方法

    在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助...在实际应用中,可以根据具体需求灵活组合使用这些函数,进行日期的精确计算和操作。

    计算两个日期之间工作日天数(c#实现)

    本文将详细介绍如何使用C#语言来计算两个指定日期之间的实际工作日天数,并通过示例代码来展示具体的实现过程。 #### 一、基本概念 在开始编写代码之前,我们需要理解几个关键概念: 1. **工作日**:通常情况下,...

    计算2个日期相差天数、去除节假日周末

    接下来,我们需要一个函数来计算两个日期之间的总天数。C++标准库中的`chrono`模块可以方便地处理日期和时间的计算。我们可以通过`std::chrono::days`来表示日期差: ```cpp std::chrono::days daysBetween(const ...

    Delphi 计算两个日期之间的时间差(天数).rar

    这将返回一个双精度浮点数,代表两个日期之间的总天数。 ```delphi var DiffDays: Double; DiffDays := Date2 - Date1; ``` 4. **处理结果**:由于结果是双精度浮点数,可能包含小数部分(代表部分天数)。...

    两个时间间隔的天数

    - 函数返回的是两个日期相隔的整数天数,不包含小时、分钟等更细粒度的时间信息。 #### 扩展知识点 - **JavaScript 中的日期对象**:`Date` 是 JavaScript 中用于处理日期和时间的标准对象。可以用来创建日期对象、...

    比较两个日期之间相差的天数

    3. **计算差值**:返回两个日期在这方面的差值。 #### 四、注意事项 1. **异常处理**:第一个方法中使用了`throws ParseException`,这是因为`SimpleDateFormat`的`parse`方法可能会抛出异常,需要进行适当的错误...

    指定两个日期计算相隔的天数

    在编程和数据分析中,计算两个日期之间的差值是一项常见的任务,...了解以上概念后,你可以根据具体需求选择合适的编程语言或工具来计算两个日期之间的天数。无论是开发应用程序还是进行数据处理,这个功能都极其实用。

    输入日期计算日期顺序天数

    本文将深入探讨如何在C++中根据给定的“年-月-日”格式的日期计算出该日期是一年中的第几天,以此满足"输入日期计算日期顺序天数"的需求。 首先,我们需要了解C++中的日期处理库。标准库中的`&lt;ctime&gt;`包含了与日期...

    日期类 Date 日期的基本运算

    我们可以计算两个日期之间的天数差异,然后返回结果。 在实现日期类 Date 时,我们还需要注意闰年的情况。在判断是否是闰年时,我们可以使用以下公式:闰年是能被 4 整除但不能被 100 整除的年份,或者是能被 400 ...

    php根据年月获取当月天数及日期数组的方法

    // 如果$rtype为2,返回日期数组 if ($rtype == '2') { for ($i = 1; $i $text; $i++) { $r[] = $year . '-' . $month . '-' . $i; } } else { $r = $text; } return $r; } ``` 这个函数可以灵活地根据...

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

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

Global site tag (gtag.js) - Google Analytics