Java根据日期获取季度-简单实现

该文章介绍了如何在Java中编写一个静态方法getQuarter,接收LocalDate对象和日期格式模式,计算给定日期所属的季度,并替换相应格式中的年份和季度部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码

  • date为当期日期;
  • pattern为模板,模板仅支持yyyy,yy,q; q为季度;可自行扩展;
  • startMonth为首季度起始月;例如:公司以每年1月份为第一季度起始月,startMonth=1; 以4月为第一季度则startMonth=4;
/**
	 * 获取日期季度
	 * @param date
	 * @return 23Q1
	 */
	public static String getQuarter(LocalDate date,String pattern) {
		return getQuarter(date, pattern,1);
	}
	/**
	 * 
	 * @param date
	 * @param pattern yyyy年,q季度,例如:23Q1 yyQq; yyyy年0q季度
	 * @return
	 */
	public static String getQuarter(LocalDate date,String pattern,int startMonth) {
		if(startMonth<0||startMonth>12) {
			throw new IllegalArgumentException();
		}
		int year = date.getYear();		
		int month = date.getMonthValue();
		int cpMonth = month<startMonth?month+12:month;
		Integer q = (cpMonth-startMonth)/3+1;
		Integer cpYear = month<startMonth?year-1:year;
		String result = pattern;
		if(result.contains("yyyy")) {
			result = result.replaceAll("yyyy", cpYear.toString());
		}
		if(result.contains("yy")) {
			result = result.replaceAll("yy", cpYear.toString().substring(2));
		}
		if(result.contains("q")) {
			result = result.replaceAll("q", q.toString());
		}
		return result;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰汁菠萝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值