求java实现工作日方法

Python024

求java实现工作日方法,第1张

import java.text.DateFormat

import java.text.ParseException

import java.text.ParsePosition

import java.text.SimpleDateFormat

import java.util.Calendar

import java.util.Date

import java.util.Scanner

public class Test9 {

/**

* 第9题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。

*

* @param args

* @throws ParseException

*/

public static void main(String[] args) throws ParseException {

Scanner scan = new Scanner(System.in)

System.out.println("请输入日期(格式为yyyy-mm-dd):")

String input = scan.next()

DateFormat format = DateFormat.getDateInstance()

Date date = format.parse(input)

Calendar ca = Calendar.getInstance()

ca.setTime(date)//设置输入时间

int xingqi = ca.get(Calendar.DAY_OF_WEEK)//获得输入日期是星期几?

System.out.println("您输入的日期是:"+input)

System.out.println("这一天是"+ GetWeek(xingqi))

System.out.println("这一天是这年的第"+ ca.get(Calendar.DAY_OF_YEAR)+"天")

}

public static String GetWeek(int i)

{

if(i<0||i>7){

System.out.println(i+"没有对应的星期")

}

String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"}

return weeks[i]

}

}

import java.util.Calendar

public class Main {

    public static void main(String[] args) {

        System.out.println(countWorkDay(2018, 6))

    }

    /**

     * 获取指定年月有多少个工作日)

     *

     * @param year

     * @param month

     * @return

     */

    public static int countWorkDay(int year, int month) {

        Calendar c = Calendar.getInstance()

        c.set(Calendar.YEAR, year)

        // 月份是从0开始计算,所以需要减1

        c.set(Calendar.MONTH, month - 1)

        // 当月最后一天的日期

        int max = c.getActualMaximum(Calendar.DAY_OF_MONTH)

        // 开始日期为1号

        int start = 1

        // 计数

        int count = 0

        while (start <= max) {

            c.set(Calendar.DAY_OF_MONTH, start)

            if (isWorkDay(c)) {

                count++

            }

            start++

        }

        return count

    }

    // 判断是否工作日(未排除法定节假日,由于涉及到农历节日,处理很麻烦)

    public static boolean isWorkDay(Calendar c) {

        // 获取星期,1~7,其中1代表星期日,2代表星期一 ... 7代表星期六

        int week = c.get(Calendar.DAY_OF_WEEK)

        // 不是周六和周日的都认为是工作日

        return week != Calendar.SUNDAY && week != Calendar.SATURDAY

    }

}