我想根据月份对值进行分类,以便第一次过滤这些值
例如:-
// 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
如果你需要一个日期对象,那么下面的方法就可以了
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()。
重要的是-有大量的库会给你这个特定的需求,但我想依靠一个做这项工作,并且实际上是为(你的一些...)这些用例设计的-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 ...
让我知道它是否足够清楚:)
使用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日 有没有干净简单的方法 我的想法: 一种方法是得到这个月,然后做一个转换声明。但这将是一个漫长而乏味的过程。不确定是否有内置的方法来做同样的事情