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

日期时间添加月方法是添加1额外的一天

龙博
2023-03-14

我目前正在处理一个问题,其中DateTime.addMonths(iStartDateH,DurationAsInt)正在增加一天。它在内部使用格鲁吉亚日历。我们目前正在这个项目中使用Java 5,例如:24个月

    ExpirationDate=DateTime.addMonths(currentDate, 24)
    CurrentDate= 01/02/2021 (dd/mm/yyyy format)
    ExpirationDate= 02/02/2023
public static ErrorCode addMonths(DateHolder dateH, int numMonths) {
    try {
        Calendar c = new GregorianCalendar();
        c.setTime(dateH.value);
        c.add(Calendar.MONTH, numMonths);
        dateH.value = c.getTime();
        return ErrorCode.successCN;
    }
    catch (Exception e) {
        IlMessage msg = new IlMessage(Msg.exceptionCaughtCN, e);
        IlSession.getSession().getMessageStack().push(msg);
        return ErrorCode.errorCN;
    }
}

我尝试检查完整的日期/时间差异,并将其作为730.77393518518518555请帮助。

共有2个答案

濮阳
2023-03-14
  1. 请注意,m表示分钟。一个月内,您需要使用M
  2. 类<code>DateHolder</code>的实现似乎有问题。java没有这样的问题。util此需求的日期时间API

演示:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

public class Main {
    public static void main(String[] args) throws ParseException {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse("01/02/2021"));
        System.out.println(calendar.getTime());
        int numMonths = 24;
        calendar.add(Calendar.MONTH, numMonths);
        System.out.println(calendar.getTime());
    }
}

输出:

Mon Feb 01 00:00:00 GMT 2021
Wed Feb 01 00:00:00 GMT 2023
齐典
2023-03-14

我正在使用Java 8,我尝试了下面的代码,它对我来说工作得很好(出于测试目的,我将日期设置为2月1日,如您的示例所示)。

    public static void main(String...pStrings) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate currentDate = LocalDate.of(2021, 2, 1); //LocalDate.now();
        System.out.println("Original Date -" +currentDate.format(formatter));
        
        LocalDate newDate = currentDate.plusMonths(24);
        System.out.println("updated date - " + newDate.format(formatter));
    }

我收到了输出:-

Original Date -01/02/2021
updated date - 01/02/2023
 类似资料:
  • 问题内容: 在我的表我有,列。 示例:和 如何将此列添加到我的列中,这样我就可以 我尝试了这个: 但它不起作用。 谢谢你,史蒂夫 问题答案: 据我了解,您想将前两位数字添加为小时,将后两位数字添加为分钟-但您并未在通话中执行此操作- 您要将两个部分都添加为-请尝试以下操作: 在这里,我使用了两个嵌套-内部添加小时,外部添加分钟到添加小时的结果上。 另外:在SQL Server中是 基于1的 ,例如

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

  • 问题内容: 我希望有人可以帮助我。 我想在数据库日期中增加一个月,但我想防止在最后一天的两个月中跳过两个月。 例如,我可能有: 2009年1月31日 我想得到 2009年2月28日 并不是 2009年3月2日 下一个日期是 2009年3月28日 2009年6月28日 等等。 oracle中是否已经有执行这种操作的功能? 编辑 是的 我想每个月将具有某些状态的所有记录复制到下一个(因此用户不必每月再

  • 我有一个,作为布局管理器,我正在尝试获得这种安排: 忽略边框的额外深蓝色空间。 我总共有5列和3行,所有组件都将设置PreferredSize()设置为精确值,以完全适合同样具有首选大小(170 x 115)的JPanel。 问题是似乎在最后一列宽度上添加了30 pxls,因为仅在的宽度上添加了30 pxls(总共200个)组件显示正确,如下所示: 但由于额外的空间,最后一列被分隔开了。 它添加了

  • 我有FromDate 我试过下面的表达,但不幸的是它不工作。 =iif(ISNO(参数!FromDate. Value),格式(今天。添加日(1-今天。日)。添加月(-4),“MM/dd/yyyy hh: mm: ss tt”),格式(DateAdd(DateInterval. Month,-4,参数!FromDate. Value),“MM/dd/yyyy hh: mm: ss tt”)) 谁能

  • 问题内容: 我有一个简单的变量,今天增加了一个月: 今天是2013年1月,所以我希望能回到2013-02,但我却能获得2013-03。我不知道为什么要跳到三月。 问题答案: 跳到3月是因为今天是1月29日,加上一个月就表示2月29日(该日期不存在),因此它将移至下一个有效日期。 这也将在很多个月的31日发生,但在1月到2月的情况下显然更明显,因为2月较短。 如果您对月份中的某天不感兴趣,而只希望它