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; }}
注:节假日不是固定的无法获取,每年的节假日只有在国务院公布后才知道
阅读全文
0 0
- Java 对日期的操作
- java 对日期的操作
- java对日期的操作
- Java 中对日期的操作
- Java 中对日期的操作
- java中对日期的加减操作
- java中对日期的加减操作
- java中对日期的操作
- java中对日期的加减操作
- java中对日期的加减操作
- java中对日期的操作
- java中对日期的加减操作
- java对日期的操作详解
- java对日期的一些操作
- java中对日期的加减操作
- JAVA对日期的相关操作
- 对日期的一些操作
- MDX对日期的操作
- 静态内部类
- 02-各DBMS区别特点
- laravel 服务提供者 别名 门面 3者之间的关系
- QT4 configure 学习备忘
- android常用布局
- java对日期的操作
- vue轮播图插件vue-awesome-swiper的引入及使用
- linux下的find文件查找命令与grep文件内容查找命令
- voc_eval.py 解析
- struts2中Action配置的默认值
- 03-JDBC操作java语言数据库
- docker Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runn
- 内存地址与寻址
- 迭代器模式