Java 在main()中调用int函数以显示当前工作日
我对java非常陌生,发现下面的代码可以获取不包括周六和周日的工作日数 我需要知道如何在Java 在main()中调用int函数以显示当前工作日,java,function,calendar,Java,Function,Calendar,我对java非常陌生,发现下面的代码可以获取不包括周六和周日的工作日数 我需要知道如何在main()中调用此函数以显示当月的workDays 谢谢 package mypkg; import java.sql.Date; import java.util.Calendar; public class workrays { public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) {
main()
中调用此函数以显示当月的workDays
谢谢
package mypkg;
import java.sql.Date;
import java.util.Calendar;
public class workrays {
public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) {
Calendar startCal;
Calendar endCal;
startCal = Calendar.getInstance();
startCal.setTime(startDate);
endCal = Calendar.getInstance();
endCal.setTime(endDate);
int workDays = 0;
//Return 0 if start and end are the same
if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {
return 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.SATURDAY
&& startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
++workDays;
}
} while (startCal.getTimeInMillis() < endCal.getTimeInMillis());
return workDays;
}
public static void main(String args[]) {
getWorkingDaysBetweenTwoDates(Date startDate, Date endDate);
System.out.println(workdays);
}
}
包mypkg;
导入java.sql.Date;
导入java.util.Calendar;
公共类工作射线{
两个日期之间的公共静态int GetWorkingDays(日期开始日期、日期结束日期){
日历标准;
日历endCal;
startCal=Calendar.getInstance();
startCal.setTime(startDate);
endCal=Calendar.getInstance();
endCal.设置时间(endDate);
国际工作日=0;
//如果开始和结束相同,则返回0
if(startCal.getTimeInMillis()==endCal.getTimeInMillis()){
返回0;
}
if(startCal.getTimeInMillis()>endCal.getTimeInMillis()){
startCal.setTime(结束日期);
端校准设定时间(起始日期);
}
做{
startCal.add(日历日/月,1);
if(startCal.get(Calendar.DAY/周)!=Calendar.SATURDAY
&&startCal.get(日历。星期几)!=日历。星期日){
++工作日;
}
}while(startCal.getTimeInMillis()
您需要通过如下参考:
Date startDate = new Date();
Date endDate = new Date();
getWorkingDaysBetweenTwoDates(startDate, endDate);
或一个班轮:
getWorkingDaysBetweenTwoDates(new Date(), new Date());
当然,您必须在创建开始日期和结束日期时提供它们的值,通常使用java.util.Calendar
。您也可以使用Date方法来实现它,但它们已被弃用
编辑:
这就是如何使用中的方法操纵java.util.Date
首先,应该使用
java.util.Date
,而不是java.sql.Date
。其次,您需要先创建Date
s实例,然后再将其发送到getworkingdaysbetween twodates
函数。第三,您需要将getworkingdaysbetween twodates
函数的结果存储在局部变量中,然后使用它。要创建日期
s,可以使用SimpleDataFormat
对象:
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date startDate = sdf.parse("2013-02-20");
Date endDate = sdf.parse("2013-02-22");
int workdays = getWorkingDaysBetweenTwoDates(startDate, endDate);
System.out.println(workdays);
} catch (Exception e) {
System.out.println("There's an error somewhere. Check the stacktrace to find it");
e.printStackTrace(System.out);
}
}
根据您的评论,您可以创建另一个函数,通过发送
Date
,返回值为第一个日期的Date
实例:
public static Date getFirstDateOfMonth(Date aDate) {
Calendar c = Calendar.getInstance();
c.setTime(aDate);
c.set(Calendar.DATE, 1);
return c.getTime();
}
你可以这样称呼它:
public static void main(String[] args) {
Date endDate = new Date(); //current date/time
Date startDate = getFirstDateOfMonth(endDate);
int workdays = getWorkingDaysBetweenTwoDates(startDate, endDate);
System.out.println(workdays);
}
当处理日期计算表示为“代码>日期<代码>或<代码>日历> /代码>时,考虑如果一天内的值(实际上是毫秒精密时间戳)不是同一时间,那么重要的是要考虑什么。这是非常重要的,如果你不想得到任何令人惊讶的答案,你必须精确地定义它。在您的情况下,开始日期(例如2013年2月22日08:00)和结束日期(例如2013年2月22日17:00)返回零,但可以认为结果应为1。我想将开始日期设置为当月1日,结束日期设置为今天。。是否可以主要显示当前工作的工作日month@user2058260如果此答案解决了您的问题(或者更好地引导您找到解决方案),请使用Calendar类中的方法设置日期。:)是否可以从新日期提取月/年();所以我可以把startDate=(year+“-”+month+“1),这样每次它都会选择当前monthcal.set(Calendar.Date,1)中的第一个;这行中的错误:Date无法解析或不是字段它应该是cal.set(Calendar.Date,1)。请参考我在答案中包含的Calendar的API…)谢谢您得到了想要的结果:)
public static void main(String[] args) {
Date endDate = new Date(); //current date/time
Date startDate = getFirstDateOfMonth(endDate);
int workdays = getWorkingDaysBetweenTwoDates(startDate, endDate);
System.out.println(workdays);
}