作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想获取特定月份的工作日数
在我的例子中,周末是星期五和星期六
我使用这段代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TestWeekDay {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String dateInString = "01-07-2016";
Date startDate = sdf.parse(dateInString);
String dateInString2 = "31-07-2016";
Date endDate = sdf.parse(dateInString2);
calculateDuration(startDate,endDate);
}
public static int calculateDuration(Date startDate, Date endDate)
{
Calendar startCal = Calendar.getInstance();
startCal.setTime(startDate);
Calendar endCal = Calendar.getInstance();
endCal.setTime(endDate);
int workDays = 0;
if (startCal.getTimeInMillis() > endCal.getTimeInMillis())
{
startCal.setTime(endDate);
endCal.setTime(startDate);
}
do
{
startCal.add(Calendar.DAY_OF_MONTH, 1);
if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.FRIDAY && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY)
{
workDays++;
}
}
while (startCal.getTimeInMillis() <= endCal.getTimeInMillis());
return workDays;
}
}
例如,当我测试 7 月份时,我有 22,正确的响应应该是 21
最佳答案
如果您在 if
语句之后添加以下行,您将看到您的问题。
System.out.printf("%s %d%n", new SimpleDateFormat("yyyy-MM-dd EEE").format(startCal.getTime()), workDays);
顺便说一句:这称为调试。
输出
2016-07-02 Sat 0
2016-07-03 Sun 1
2016-07-04 Mon 2
2016-07-05 Tue 3
2016-07-06 Wed 4
2016-07-07 Thu 5
2016-07-08 Fri 5
2016-07-09 Sat 5
2016-07-10 Sun 6
2016-07-11 Mon 7
2016-07-12 Tue 8
2016-07-13 Wed 9
2016-07-14 Thu 10
2016-07-15 Fri 10
2016-07-16 Sat 10
2016-07-17 Sun 11
2016-07-18 Mon 12
2016-07-19 Tue 13
2016-07-20 Wed 14
2016-07-21 Thu 15
2016-07-22 Fri 15
2016-07-23 Sat 15
2016-07-24 Sun 16
2016-07-25 Mon 17
2016-07-26 Tue 18
2016-07-27 Wed 19
2016-07-28 Thu 20
2016-07-29 Fri 20
2016-07-30 Sat 20
2016-07-31 Sun 21
2016-08-01 Mon 22
22
如您所见,您有两个问题:
我会留给您找出解决方案。祝你好运。
关于java - 获取特定月份的工作日数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429910/
使用PHP实现计算两个日期间隔的年、月、周、日数: 复制代码 代码如下: <?php function format($a,$b){
基本上我使用的是 MySQL gem for Ruby , 我对日期比较没有合理的支持。 Mysql::Time 类只给我访问器方法,如年、月、秒等。如果我可以将其转换为 Ruby DateTime
我是一名优秀的程序员,十分优秀!