java对日期的操作

来源:互联网 发布:收看地方电视台的软件 编辑:程序博客网 时间:2024/05/16 08:59

两个时间差

package date;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;/** * 两个时间差 *  * @author Yuk */public class GetDays {    public static void main(String[] args) {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:dd");        Calendar ca1 = Calendar.getInstance();        Calendar ca2 = Calendar.getInstance();        try {            ca1.setTime(sdf.parse("2017-07-25 15:06:00"));// 开始时间            ca2.setTime(sdf.parse("2017-07-27 15:06:00"));// 结束时间            long l = ca2.getTimeInMillis() - ca1.getTimeInMillis();// 结束时间(毫秒)-开始时间(毫秒)hh:mm:ss.SSS            int days = new Long(l / (1000 * 60 * 60 * 24)).intValue();// 毫秒转为天数            System.out.println("毫秒:"+l);            System.out.println(days);        } catch (ParseException e) {            e.printStackTrace();        }    }}

获取一个月的第一天与最后一天

package date;import java.text.SimpleDateFormat;import java.util.Calendar;/** * 获取一个月的第一天与最后一天 *  * @author Yuk *  */public class GetFirstOrEndDay {    public static void main(String[] args) {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        Calendar c1 = Calendar.getInstance();        c1.add(Calendar.MONTH, 0);        c1.set(Calendar.DAY_OF_MONTH, 1);// 获取当前月份第一天        String persentDate = sdf.format(c1.getTime());        Calendar c2 = Calendar.getInstance();        c2.set(Calendar.DAY_OF_MONTH,                c2.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取月份最后一天        String aftertDate = sdf.format(c2.getTime());        System.out.println("当月第一天:" + persentDate);        System.out.println("当月最后一天:" + aftertDate);    }}

获取两个日期之间应上班天数(去除双休)

package date;import java.util.Calendar;import java.util.Scanner;/** * 获取两个日期之间应上班天数(去除双休) *  * @author Yuk */public class GetWorkDays {    public static void main(String[] args) {        System.out.println(getWorkDays("2017-05-01", "2017-05-31"));        Scanner scanner = new Scanner(System.in);        System.out.print("Please input the date(yyyy-MM): ");        String input = scanner.nextLine();        if (!input.matches("\\d{4}-\\d{2}")) {            System.out.println("Error input in format, exit!");            System.exit(0);        }        int count = 0;        int month = Integer.parseInt(input.substring(5, 7));        Calendar cal = Calendar.getInstance();        cal.set(Calendar.YEAR, Integer.parseInt(input.substring(0, 4)));        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)) {                count++;            }            cal.add(Calendar.DATE, 1);        }        System.out.println(count);    }    /**     * 计算一段时间段内的上班天数     *      * @param startDate     *            起始时间     * @param endDate     *            结束时间     * @return 时间差(排除了双休)     */    public static int getWorkDays(String startDate, String endDate) {        int count = 0;// 定义上班天数        int startDay = Integer.parseInt(startDate.substring(8));// 截取天        int startMonth = Integer.parseInt(startDate.substring(5, 7));// 截取月份        int startYear = Integer.parseInt(startDate.substring(0, 4));// 截取年份        int endDay = Integer.parseInt(endDate.substring(8));        int endMonth = Integer.parseInt(endDate.substring(5, 7));        int endYear = Integer.parseInt(endDate.substring(0, 4));        Calendar cal = Calendar.getInstance();        cal.set(Calendar.DAY_OF_MONTH, startDay);// 设置开始天        cal.set(Calendar.MONTH, startMonth - 1);// 设置开始月份        cal.set(Calendar.YEAR, startYear);// 设置开始年份        // cal.set(Calendar.DATE, 1);        boolean falg = true;        // 从起始日期开始循环        while (falg) {            System.out.println(cal.get(Calendar.YEAR) + "   "                    + cal.get(Calendar.MONTH) + "   "                    + cal.get(Calendar.DAY_OF_MONTH));            if (cal.get(Calendar.MONTH) == endMonth - 1                    && cal.get(Calendar.YEAR) == endYear                    && cal.get(Calendar.DAY_OF_MONTH) == endDay) {                // 如果循环到的当天是结束日期当天,则跳出循环                falg = false;            }            int day = cal.get(Calendar.DAY_OF_WEEK);            // 如果当天不是星期六或者星期天            if (!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)) {                // 上班天数加1                count++;            }            // 每循环一次,天数日期加1            cal.add(Calendar.DATE, 1);        }        return count;    }}

注:节假日不是固定的无法获取,每年的节假日只有在国务院公布后才知道

原创粉丝点击