java怎么创建一个给定日期_Java Data Type - 如何创建一个新的日期对象与给定日期的季节的最后一天...

import java.time.LocalDate;

import java.time.Month;

import java.time.temporal.ChronoField;

public class Main {

public static void main(String[] argv) {

System.out.println(endOfSeason(LocalDate.now()));

}

/**

* Creates a new date object with the last day of the season of the given

* date. The time is set to 0 o'clock.

*/

public static LocalDate endOfSeason(LocalDate date) {

LocalDate result = beginOfSeason(date);

return endOfMonth(result.plusMonths(5));

}

/**

* Creates a new date object with the first date in the same season as the

* given date. A season is defined as a period from April to September and

* from October to March.

*/

public static LocalDate beginOfSeason(LocalDate date) {

int nMonth = date.get(ChronoField.MONTH_OF_YEAR);

switch (Month.of(nMonth)) {

case JANUARY:

case FEBRUARY:

case MARCH:

// Jan-Mar --> move to the previous year 1. October

return date.minusMonths(

nMonth + Month.DECEMBER.getValue() - Month.OCTOBER.getValue())

.withDayOfMonth(1);

case APRIL:

case MAY:

case JUNE:

case JULY:

case AUGUST:

case SEPTEMBER:

// Apr-Sep --> move to 1. April

return date.minusMonths(nMonth - Month.APRIL.getValue())

.withDayOfMonth(1);

default:

// Oct-Dec --> move to 1. October

return date.minusMonths(nMonth - Month.OCTOBER.getValue())

.withDayOfMonth(1);

}

}

public static LocalDate endOfMonth(LocalDate date) {

return date.withDayOfMonth(date.lengthOfMonth());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值