`

java获取当月的工作日

    博客分类:
  • java
阅读更多

在这个记录一下,记录java获取某个月的工作日的代码,方便以后查看!

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.taagoo.wenbo.common.util.DateUtils;

public class Test {
	private static List<Date> getDates(int year,int month){
		List<Date> dates = new ArrayList<Date>();
    	
    	Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH,  month - 1);
		cal.set(Calendar.DATE, 1);
		
		
		while(cal.get(Calendar.YEAR) == year && 
				cal.get(Calendar.MONTH) < month){
			int day = cal.get(Calendar.DAY_OF_WEEK);
			
			if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
				dates.add((Date)cal.getTime().clone());
			}
			cal.add(Calendar.DATE, 1);
		}
		return dates;

	}
	public static void main(String[] args) {
		List<Date> dates = getDates(2013,12);
		for(Date date : dates){
			System.out.println(DateUtils.getDate2String(date));
		}

	}
}
分享到:
评论
5 楼 asialee 2013-05-10  
asialee 写道
hzzduoduo 写道
无限循环下去……你可以去看看

好,我看看

确实有问题,细心的网友。我并在这个地方解答什么地方不对。
List<Date> dates = new ArrayList<Date>();
    	
    	Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, 2012);
		cal.set(Calendar.MONTH,  month - 1);
		cal.set(Calendar.DATE, 1);
		
		
		while(cal.get(Calendar.MONTH) < month){
			int day = cal.get(Calendar.DAY_OF_WEEK);
			
			if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
				dates.add((Date)cal.getTime().clone());
			}
			
			cal.add(Calendar.DATE, 1);
		}
		return dates;


这个代码的实现原理是将日期定格在月初的一号,然后如果发现不是周末就是工作日了,然后一天一天的超后推演,如果发现是下个月了就退出,但是没想到这个里面有问题,如果是12月份的花,到第二年、第三年、第n年都回小于当前的12月份,所以一直死循环了。我更新下程序,谢谢网友!
4 楼 asialee 2013-05-10  
hzzduoduo 写道
无限循环下去……你可以去看看

好,我看看
3 楼 hzzduoduo 2013-05-10  
无限循环下去……你可以去看看
2 楼 asialee 2013-05-09  
hzzduoduo 写道
当month=12的时候怎么不行啊,是不是month不能等于12啊?

具体是什么问题?
1 楼 hzzduoduo 2013-05-08  
当month=12的时候怎么不行啊,是不是month不能等于12啊?

相关推荐

    java中计算某个月的工作日总共几天

    根据提供的文件信息,我们可以总结出以下关于Java中计算某个月工作日的相关知识点: ### Java中计算某个月的工作日总数及具体工作日 #### 概述 在Java中,要计算一个月内有多少个工作日(通常指周一至周五),以及...

    JAVA获取工作日,及设定指示日期为工作日 (新)

    可以获取得到工作的MAP,并可以指定日期为工作日,将工作日设为非工作日. 之前提交的有问题

    java 工具类 获取俩个时间之间相差分钟数 排除周六周日 节假日 精确到分钟数/秒

    网上排除节假日、周六周日 获取相差时间 分为四种情况, 精确到天 此工具类在此基础之上进行优化, 分为俩种情况, 精确到分钟,保留俩位小数 (精确到秒 需自己加工下) 入口方法: getWorkHours

    java 请假天数计算工具类

    使用Java 8的日期时间API(`java.time`包)来处理日期和时间,如计算两个日期之间的天数,判断是否为工作日等。同时,为了提高效率和减少数据库交互,可以利用Redis的特性,将部分计算结果缓存起来。 综上所述,这...

    java计算工作时间除去节假日以及双休日

    最后,我们调整结束时间,使得开始时间和结束时间在同一天,或者相邻的工作日内,并计算出开始时间和结束时间之间的工作日天数。 Java 计算工作时间除去节假日以及双休日的方法可以通过上述代码实现。这种方法可以...

    JAVA中获得本地系统时间的方法

    ### JAVA中获得本地系统时间的方法 在Java编程中,获取本地系统的当前时间是常见的需求之一。这不仅可以用于记录日志、实现定时任务等功能,还能帮助开发者进行时间相关的数据处理。本文将详细介绍两种常用方法来...

    JAVA面试题最全集.pdf

    4. 日期和时间:如何取得年月日、小时分秒,如何取得从1970年到现在的毫秒数,如何获取某个日期是当月的最后一天,如何格式化日期。 5. 数组和集合、文件和目录(I/O)操作:如何列出某个目录下的所有文件和子目录,...

    Java企业级开发综合技能知识总结

    30. **如何获取某个日期是当月的最后一天?** - 使用`Calendar`类计算月份的最大天数。 31. **如何格式化日期?** - 使用`SimpleDateFormat`类。 32. **编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1...

    java日历记事本小程序

    在Java中,`java.util.Calendar` 类是用于处理日期和时间的核心类,它提供了对日期和时间的各种操作,如获取当前日期、设置特定日期、比较日期等。开发者可以利用这个类创建一个日历视图,展示当月或当年的日历布局...

    java经典面试题.doc

    如何获取某个日期是当月的最后一天? 使用`Month`类的`length`方法结合`LocalDate`类的`plusMonths`和`minusDays`方法。 #### 29. 如何格式化日期? 使用`SimpleDateFormat`或`DateTimeFormatter`类。 #### 30....

    java面试题大全.pdf

    - 获取年月日、时分秒:使用`java.util.Calendar`类或`java.time`包的类。 - 毫秒数:`System.currentTimeMillis()`返回自1970年以来的毫秒数。 - 当月最后一天:使用`Calendar`的`setLastDayOfMonth()`方法。 -...

    java笔试题 大全(附答案)

    4. 日期时间处理,如获取年月日、小时分秒,可以使用java.util.Calendar类或java.time包下的API。获取从1970年至今的毫秒数,使用System.currentTimeMillis()。获取某日期当月最后一天,可以使用Calendar类设置为下...

    JAVA面试题全集

    - 获取当前日期和时间的年月日、小时分秒:使用 `java.util.Calendar` 或 `java.time` 包中的类。 - 获取从1970年到现在的毫秒数:使用 `System.currentTimeMillis()`。 - 获取某个日期是否是当月的最后一天:...

    JAVA笔试、面试题

    - 使用java.util.Calendar或java.time包中的类(如LocalDate, LocalTime, LocalDateTime)来获取年月日、小时分秒等信息。 - 获取从1970年开始的毫秒数,可以使用System.currentTimeMillis()。 - 判断是否为当月...

    华为java面试题

    28. **获取某日期是当月的最后一天** - 使用`LocalDate`的`plusMonths()`和`minusDays()`方法组合实现。 29. **日期格式化** - 使用`DateTimeFormatter`类进行日期格式化。 30. **编码转换** - 使用`new String...

    Java面试题以及答案

    如何获取某个日期是当月的最后一天? 可以通过`Calendar`类的`getActualMaximum(Calendar.DAY_OF_MONTH)`方法获取。 #### 29. 如何格式化日期? 使用`SimpleDateFormat`类进行日期格式化。 #### 30. 编码转换 ...

    java面试题(尚学堂内部培训资源,绝对值得一看)

    如何获取某个日期是当月的最后一天? 使用`MonthDay`类或`Calendar`类的`getActualMaximum(Calendar.DAY_OF_MONTH)`方法。 #### 29. 如何格式化日期? 使用`SimpleDateFormat`或`DateTimeFormatter`类格式化日期...

Global site tag (gtag.js) - Google Analytics