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

如何根据当前日期(包括java中的当前日期)获取最后三个月的第一个日期和最后一个日期?

支智志
2023-03-14

我想根据月份对值进行分类,以便第一次过滤这些值

例如:-

     //     parameters 
          int lastMonths = 3;
          date currentDate= 26-04-2019;

 //expected output
 current month is 04-2019 ,1st date is 1-04-2019 and last date is 30-04-2019 
 previous month is 03-2019, 1st date is 01-03-2019 and last date is 31-03-2019
 previous month is 02-2019, 1st date is 01-02-2019 and last date is 28-02-2019

共有3个答案

江德润
2023-03-14

如果你需要一个日期对象,那么下面的方法就可以了

        Date date = getDate(targetDate);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, -3);
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        // calendar.getTime()
        // The line above returns Date object

如果你需要一个普通的字符串,那么你可以通过使用org上的DateTimeFormatter以任何方式格式化它。乔达。只需在日历上使用它的print()方法。getTimeInMillis()。

凌经赋
2023-03-14

重要的是-有大量的库会给你这个特定的需求,但我想依靠一个做这项工作,并且实际上是为(你的一些...)这些用例设计的-Java.time.LocalDate库(已经内置到Java8中)

import java.time.LocalDate;

LocalDate now = LocalDate.now(); // 2019-04-26

为了获得每月的第一天和最后一天,您可以使用:

LocalDate start = YearMonth.now().atDay(1);

(当然,现在可能是另一个月)

LocalDate end = YearMonth.now().atEndOfMonth();

你可以在一两个月内使用它,或者与一些for-loop一起使用。以下示例:
1。具体电话:

LocalDate earlierOneMonth = now.minusMonths(1); // 2019-03-26
earlierOneMonth.getDay(); // 26

2.For循环:(所以你需要像数组/列表这样的东西来存储这些值…)

for(int i=0; i < lastMonths - 1; i++){
   arr(i) = now.minusMonths(i + 1);

}

另外,为了获得月份的名称,您可以使用-

earlierOneMonth.getMonth(); // APRIL
earlierOneMonth.getMonth.getValue(); // 04

最后,为了获得一年,你可以使用-

earlier.getYear(); // 2019

一旦您有了所有想要的值,您就可以根据要求将它们打印出来,并提供预期的输出:

 "current month is" + nowMonth + "-" + nowYear + " ,1st date is" +  nowDay + "-" + nowMonth + "-" + nowYear + " and last date is ...

让我知道它是否足够清楚:)

孙海
2023-03-14

使用java.util.日历对日期进行加减

java.text.DateFormat格式化日期

    DateFormat format = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
    DateFormat monthFormat = new SimpleDateFormat("MM-yyyy", Locale.US);
    Calendar cal = Calendar.getInstance();
    cal.setTime(format.parse("26-04-2019"));
    for (int i = 0; i < 3; i++){
        System.out.println("currentDate: " + monthFormat.format(cal.getTime())); // print current month

        cal.set(Calendar.DAY_OF_MONTH, 1);
        System.out.println("first date: " + format.format(cal.getTime())); // print first date

        cal.add(Calendar.MONTH, 1);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.add(Calendar.DATE, -1);

        System.out.println("last date: " + format.format(cal.getTime())); // print last date


        cal.add(Calendar.MONTH, -1);
    }
 类似资料:
  • 问题内容: 我需要获取 当前季度 的 第一个日期 作为java.util.Date对象,并获取 当前季度 的 最后一个日期 作为java.util.Date对象。 我正在使用以下方法获取本月的第一个日期和本月的最后一个日期。 有没有一种方法可以修改该功能以实现此目的,或者有人可以指出更好的方法吗? 假设第一季度= 1月2月3月,第二季度= 4月,5月,6月等。 问题答案: 这应该可以,但是我建议您

  • 我需要获取当前季度的第一个日期作为java.util.Date对象,当前季度的最后一个日期作为java.util.Date对象。 例如,我找到了提供季度信息的方法 但前提是第一季度从1月份开始。 假设第一季度=8月、9月、10月 第二季度=11月、12月、1月 第三季度=2月、3月、4月 等等,有人能帮我得到第一个和最后一个日期吗。

  • 问题内容: 我试图获取给定月份和年份的第一个日期和最后一个日期。我使用以下代码以yyyyMMdd格式获取最后日期。但是无法获得这种格式。另外,我希望开始日期采用相同的格式。我仍在努力。任何人都可以帮助我修复以下代码。 问题答案: 获取 开始日期 ( 注意 :在开始日期中, 日期 = 1) 对于格式化

  • 问题内容: 我正在尝试往返日期,该日期将有以前的日期,并且将有本月的第一个日期。一月份将会如此,依此类推。如何正确获取当月的第一个日期?我做不到。 问题答案: 尝试 更新(自Java 8以来 ):

  • 问题内容: 如何在where子句中使用下个月的第一天和最后一天? 问题答案: 采用:

  • 我有一个LocalDateTime对象,我想得到这个月的最后一个日期。所以如果localDateTime指向今天的10月29日。我想把它改为10月31日 有没有干净简单的方法 我的想法: 一种方法是得到这个月,然后做一个转换声明。但这将是一个漫长而乏味的过程。不确定是否有内置的方法来做同样的事情