
正文
java代码计算节假日 java节假日工具类
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用java 进行日期计算,获取当前天+1天,周末节假日不算,在线等待中,十万火急……
迟来java代码计算节假日的答案
1.周末版本(不含节假日判断)
注意:最下面是使用的 递归算法
/**
* 获得收益时间(获取当前天+1天java代码计算节假日,周末不算).
*
* @param date
* 任意日期
* @return the income date
* @throws NullPointerException
* if null == date
*/
private Date getIncomeDate(Date date) throws NullPointerException{
if (null == date){
throw new NullPointerException("the date is null or empty!");
}
//对日期的操作,我们需要使用 Calendar 对象
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
//+1天
calendar.add(Calendar.DAY_OF_MONTH, +1);
//判断是星期几
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
Date incomeDate = calendar.getTime();
if (dayOfWeek == 1 || dayOfWeek == 7){
//递归
return getIncomeDate(incomeDate);
}
return incomeDate;
}
测试方法:
@Test
public void testGetIncomeDate() throws ParseException{
String pattern = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(getIncomeDate(new Date())));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-07-31 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-08-01 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-08-02 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-08-03 13:33:05"))));
}
输出结果:
2014-08-01 13:48:09
2014-08-01 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
注意:返回的是 时间+1的时间,精度是到毫秒 纳秒,如果有特殊需求,需要自己再处理下
2.周末+节假日版本
/**
* 获得收益时间(获取当前天+1天,周末不算).
*
* @param date
* 任意日期
* @return the income date
* @throws NullPointerException
* if null == date
*/
private Date getIncomeDate(Date date) throws NullPointerException{
if (null == date){
throw new NullPointerException("the date is null or empty!");
}
//对日期的操作,我们需要使用 Calendar 对象
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
//+1天
calendar.add(Calendar.DAY_OF_MONTH, +1);
Date incomeDate = calendar.getTime();
if (isWeekend(calendar) || isHoliday(calendar)){
//递归
return getIncomeDate(incomeDate);
}
return incomeDate;
}
/**
* 判断一个日历是不是周末.
*
* @param calendar
* the calendar
* @return true, if checks if is weekend
*/
private boolean isWeekend(Calendar calendar){
//判断是星期几
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1 || dayOfWeek == 7){
return true;
}
return false;
}
/**
* 一个日历是不是节假日.
*
* @param calendar
* the calendar
* @return true, if checks if is holiday
*/
private boolean isHoliday(Calendar calendar){
String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String dateString = simpleDateFormat.format(calendar.getTime());
//节假日 这个可能不同地区,不同年份 都有可能不一样,所以需要有个地方配置, 可以放数据库, 配置文件,环境变量 等等地方
//这里以配置文件 为例子
ResourceBundle resourceBundle = ResourceBundle.getBundle("holidayConfig");
String holidays = resourceBundle.getString("holiday");
String[] holidayArray = holidays.split(",");
boolean isHoliday = org.apache.commons.lang.ArrayUtils.contains(holidayArray, dateString);
return isHoliday;
}
配置文件:
holiday=2014-10-01,2014-10-02,2014-10-03,2014-10-04,2014-10-05,2014-10-06,2014-10-07
测试方法 :
/**
* Testenclosing_type.
*
* @throws ParseException
* the parse exception
*/
@Test
public void testGetIncomeDate() throws ParseException{
String pattern = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(getIncomeDate(new Date())));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-07-31 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-08-01 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-08-02 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-08-03 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-09-30 13:33:05"))));
System.out.println(simpleDateFormat.format(getIncomeDate(simpleDateFormat.parse("2014-10-02 13:33:05"))));
}
结果:
2014-08-01 15:14:59
2014-08-01 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
2014-10-08 13:33:05
2014-10-08 13:33:05
相关问答
Q1: 用java实现在控制台输出一年中所有节假日!
因为很多的节假日,没有规律性。所以程序实现只有写死日期。
可以做一个配置文件,手工填写假日信息,然后再由java显示出来。
Q2: JAVA判断当前日期是节假日还是工作日
你好,这个功能一般是使用一个专门java代码计算节假日的数据库表把一年java代码计算节假日的节假日都存进去来判断的。国家每年都会提前发布一年的节假日,然后我们再导入到数据库。而特殊的做法应该可以接入百度之类的接口。希望能帮到你。
Q3: java 算当月休息日
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class WeekDay {
public static final String FORMAT="yyyyMM";
public static java.util.Date toDate(String dateStr) {
Date d=null;
SimpleDateFormat formater=new SimpleDateFormat(FORMAT);
try {
formater.setLenient(false);
d=formater.parse(dateStr);
} catch(Exception e) {
d=null;
}
return d;
}
public static int getFirstWeekdayOfMonth(int year, int month) {
Calendar c=Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.SATURDAY);
c.set(year, month - 1, 1);
return c.get(Calendar.DAY_OF_WEEK);
}
public static void main(String[] args) {
System.out.println("请输入年月:");
Scanner sc=new Scanner(System.in);
String dateStr=sc.nextLine();
Date date=toDate(dateStr);
Calendar canlender=Calendar.getInstance();
canlender.setTime(date);
int day=getFirstWeekdayOfMonth(canlender.YEAR, canlender.MONTH);
Calendar canlender2=Calendar.getInstance();
canlender2.set(canlender.get(Calendar.YEAR), canlender.get(Calendar.MONTH), day);
Calendar canlender3=Calendar.getInstance();;
canlender3.set(canlender.get(Calendar.YEAR), canlender.get(Calendar.MONTH), day + 1);
while(canlender2.get(Calendar.MONTH) == canlender.get(Calendar.MONTH)) {
System.out.println(canlender2.get(Calendar.DATE));
System.out.println(canlender3.get(Calendar.DATE));
canlender2.add(Calendar.DATE, 7);
canlender3.add(Calendar.DATE, 7);
}
}
}
Q4: java 怎么计算一个月有多少节假日
用if语句判断呗java代码计算节假日,因为各个国家java代码计算节假日的节假日、纪念日都不尽相同java代码计算节假日,只能根据当地的风俗习惯、法定假日做判断
Q5: 一段可以跳过周末和节假日的java程序怎么写
public static boolean isWeekend(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int result = cal.get(Calendar.WEEK_OF_MONTH);
if (result == Calendar.SATURDAY || result == Calendar.SUNDAY) {
return true;
}
return false;
}
这段代码只是判断是不是周末,节假日的话只能通过某些数据配置来判断了。节假日是没法计算的。
java代码计算节假日的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java节假日工具类、java代码计算节假日的信息别忘了在本站进行查找喔。






