Javaは月ごとに時間を分けて構想と方法を実現します。
前言
時には私達はしばらくの時間を得て、月によってこの時間を区切ります。例えば、開始時間は2020/07/15から2021/07/05までは月ごとにデータをグループ化して展示するので、この時間を以下のように分ける必要があります。
2020/07/15~2020/08/01
2020/08/01~2020/09/01
2020/09/01~2020/10/01
…
2021/06/01~2021/07/01
2021/07/01~2021/07/05
一、知識点
時間を分類するには主にJavaのCalendarが使われていますが、一般的に時間を処理する必要がある場合はこの類が必要です。Calendarという種類の設定を使用してもよく、またはカレンダー内の時間を取得してもよく、いくつかの一般的なAPIは以下のように示されている。
初期化Calendarオブジェクト
大体の実現の考え方は、開始時間から、アキュムレータ方式で月ごとに増加し、現在の時間が終了時間より大きい場合は、重畳を停止するということです。
なお、現在の時間が終了時間よりも大きい場合でも、終了時間を結果セットに追加する必要があります。最後の時間帯は月の初めから終わりまでです。
三、実現案
実現の方式は思考と同じです。いくつかのコメントはコードに書いてあります。下の図のように。
締め括りをつける
ここで、Javaについては、月ごとに時間を区切って構想と方法を実現する文章を紹介します。さらに関連するJava時間は月ごとに内容を分けます。以前の文章を検索してください。または、次の関連記事を引き続きご覧ください。これからもよろしくお願いします。
時には私達はしばらくの時間を得て、月によってこの時間を区切ります。例えば、開始時間は2020/07/15から2021/07/05までは月ごとにデータをグループ化して展示するので、この時間を以下のように分ける必要があります。
2020/07/15~2020/08/01
2020/08/01~2020/09/01
2020/09/01~2020/10/01
…
2021/06/01~2021/07/01
2021/07/01~2021/07/05
一、知識点
時間を分類するには主にJavaのCalendarが使われていますが、一般的に時間を処理する必要がある場合はこの類が必要です。Calendarという種類の設定を使用してもよく、またはカレンダー内の時間を取得してもよく、いくつかの一般的なAPIは以下のように示されている。
初期化Calendarオブジェクト
Calendar calendar = Calendar.getInstance();
カレンダーの時間を設定します。
Date time = new Date;
calendar.setTime(time);
カレンダーの時間(年月日)を取得します。
calendar.set(Calendar.YEAR, 2021); //
calendar.add(Calendar.MONTH, 1); //
calendar.set(Calendar.DAY_OF_MONTH, 1); //
二、考え方分析大体の実現の考え方は、開始時間から、アキュムレータ方式で月ごとに増加し、現在の時間が終了時間より大きい場合は、重畳を停止するということです。
なお、現在の時間が終了時間よりも大きい場合でも、終了時間を結果セットに追加する必要があります。最後の時間帯は月の初めから終わりまでです。
三、実現案
実現の方式は思考と同じです。いくつかのコメントはコードに書いてあります。下の図のように。
/**
*
*
* @param startTime ( )
* @param endTime ( )
*/
public static List<Long> getIntervalTimeByMonth(Date startTime, Date endTime) {
List<Long> dateList = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(startTime);
dateList.add(calendar.getTimeInMillis());
while (calendar.getTimeInMillis() < endTime.getTime()) {
//
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.DATE, -1);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
if(calendar.getTimeInMillis() >= endTime.getTime()){
dateList.add(endTime.getTime());
break;
}
//
calendar.add(Calendar.DATE, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
dateList.add(calendar.getTimeInMillis());
}
return dateList;
}
テストコードは以下の通りです。
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate = sdf.parse("2020-07-15");
Date endDate = sdf.parse("2021-07-05");
List<Long> endDateList = DateUtil.getIntervalTimeByMonth(beginDate, endDate);
for (int i = 0; i < endDateList.size(); i++) {
Long beginStr = endDateList.get(i);
String begin1 = sdf1.format(new Date(beginStr));
System.out.println(" " + i + " :" + begin1);
}
}
テストの結果は以下の通りです。締め括りをつける
ここで、Javaについては、月ごとに時間を区切って構想と方法を実現する文章を紹介します。さらに関連するJava時間は月ごとに内容を分けます。以前の文章を検索してください。または、次の関連記事を引き続きご覧ください。これからもよろしくお願いします。