万年历—Java计算父亲节是哪天?父亲节是哪一天?2017年的父亲节是哪一天?
父亲节是哪一天?
父亲节是每年的六月份,第三个周日。2017年的父亲节是:2017年06月18日,星期六,农历 五月廿四丁酉年 【鸡年】丙午月 丙子日
这有点尴尬了,和我们的节日不一样,美国的节日日期不固定。
最近几天都在攻克 Java 版本的万年历,可能有的人觉得很容易,网上大把这样的 Demo ,但是我测试N篇,基本都有问题。比如测试 “ 1989年8月23日 ” 农历应该是“ 七月廿二 ”,但是好多算法得出是“ 七月廿一”。还有一些闰月,如1998年的6月和7月,农历为5月,属于闰月。这样细算算,问题挺多。
不扯了,远了,万年历日期查询,回头我会以工具和接口开放查询。下面说说计算父亲节吧。
父亲节计算,Java代码
/**
*
* 开发公司:SOJSON在线工具 <p>
* 版权所有:© www.sojson.com<p>
* 博客地址:https://www.sojson.com/blog/ <p>
* <p>
*
* 计算父亲节
*
* <p>
*
* 区分 责任人 日期 说明<br/>
* 创建 周柏成 2017年5月20日 <br/>
*
* @author zhou-baicheng
* @email i@itboy.net
* @version 1.0,2017年5月20日 <br/>
*
*/
public static void main(String[] args) {
//计算2017年的父亲节
int year = 2017;
//计算父亲节,父亲节为每年的6月份,第三个周日。
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
//因为从0开始,所以减1
cal.set(Calendar.MONTH, 6-1);
int maxDate = cal.getActualMaximum(Calendar.DATE);
int sundays = 0;
for(int i = 1; i <= maxDate; i ++) {
cal.set(Calendar.DATE, i);
//判断是周日
if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
sundays ++;
//第三个周日,返回
if(sundays == 3) {
break;
}
}
}
String date = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
System.out.printf("%s年的父亲节是:%s",year,date);
//2017年的父亲节是:2017-06-18
}
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/228.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。