当前位置: 首页 > 知识库问答 >
问题:

添加30天到日期在java

司空均
2023-03-14

为什么我在今天的基础上加上30天就得到了今天的30天,而当我加上20天就得到了今天的30天??

这是一个样本

import java.text.DateFormat;
import java.util.Date;

public class DatePlus
{

    public static void main(String[] args)
    {
        Date now = new Date();
        Date now1 = new Date();
        Date now2 = new Date();
        DateFormat currentDate = DateFormat.getDateInstance();

        Date addedDate1 = addDays(now2, 20);
        Date addedDate2 = addDays(now1, 30);
        System.out.println(currentDate.format(now));
        System.out.println(currentDate.format(addedDate1));
        System.out.println(currentDate.format(addedDate2));
    }

    public static Date addDays(Date d, int days)
    {
        d.setTime(d.getTime() + days * 1000 * 60 * 60 * 24);
        return d;
    }
}

“这是控制台”

Jul 30, 2012
Aug 19, 2012
Jul 10, 2012

共有3个答案

空英达
2023-03-14

>

添加1000*60*60*24的常用方法是错误的。您正在添加86400秒,但一天不一定是86400秒长。由于dst的原因,它可以长一个小时或短一个小时。由于闰秒的原因,它可以长一秒或短一秒。

你应该做的是将Date转换成一个Calendar(它实际上代表了一些日历系统,比如GregorianCalendar。然后简单地添加天数:

Calendar calendar = new GregorianCalendar(/* remember about timezone! */);
calendar.setTime(date);
calendar.add(Calendar.DATE, 30);
date = calendar.getTime();

使用DateUtils。来自Apache Commons Lang的addDays()

DateUtils.add(date, 30);

这并不违反上面所写的内容,它会在下面转换为日历

或者完全避开这个地狱,去Joda Time。

须敏学
2023-03-14

这是因为30*1000*60*60*24溢出整数。最大值,而20*1000*60*60*24没有。

司空高义
2023-03-14

日历http://docs.oracle.com/javase/6/docs/api/java/util/GregorianCalendar.html

伪代码:

Calendar c= Calendar.getInstance();
c.add(Calendar.DATE, 30);
Date d=c.getTime();
 类似资料:
  • 问题内容: 我的代码。 我的问题,当表单执行此文件时,我想将这30天添加到数据库的日期列中,然后在fname中插入fname,在web中插入web,并在日期+ 30间隔中插入日期。 谢谢你。 问题答案: 使用以下查询:

  • 问题内容: 我在MySQL中有一张表。将表中的当前日期值添加为2天的sql语句看起来像什么? 这会增加一秒钟的值,我不想更新时间,我想增加两天? 问题答案: 假设您的字段是一种类型(或相似类型): 使用您提供的示例,它看起来可能像这样: 这种方法也适用。

  • 我不确定这是否可能? 我得拿到密码才能读 今天的月份即2月今天的日期即17月底的日期即31日,然后是一年中的其他11个月,在一行中按顺序排列 8月1日-31日|9月|10月|11月|12月|1月|2月|3月|4月|5月|6月|7月 请以最佳方式提供任何建议? 多谢 定时(timing的缩写)

  • 问题内容: 我有一个日期,我想使用Python脚本为其添加5天。请考虑在月底也可以使用的一般解决方案。 我正在使用以下代码: ->正在打印 现在,我要在此日期之前增加5天。我使用以下代码: 哪个返回此错误: 问题答案: 先前的答案是正确的,但是通常这样做是更好的做法: 然后,您将拥有:

  • 问题内容: 我想在日期中增加几天以在Java中获得新日期。如何使用该类来实现。 是我的生产日期的实例,我想达到到期日期,将当前日期增加100天左右并将其存储在变量中,但无法执行此操作。 问题答案: 利用。这是一个启动示例。 如果您想要更大的灵活性和更少的冗长代码,我还是建议您使用JodaTime。

  • 如何将x天添加到Java中的日期? 例如,我的日期是,格式为。 加上5天,输出应为。