1:calender 常量
Calendar cal = Calendar.getInstance(); //当前年 int year = cal.get(Calendar.YEAR); //当前月 Calendar.MONTH从0开始 int month = (cal.get(Calendar.MONTH))+1; //当前月的第几天:即当前日 int day_of_month = cal.get(Calendar.DAY_OF_MONTH); //Calendar.DAY_OF_MONTH 和 Calendar.DATE 是等价的 int date = cal.get(Calendar.DATE); //当前时钟:HOUR_OF_DAY-24小时制 int hour24 = cal.get(Calendar.HOUR_OF_DAY); //HOUR-12小时制 int hour12 = cal.get(Calendar.HOUR); //当前:分钟 int minute = cal.get(Calendar.MINUTE); //当前秒 int second = cal.get(Calendar.SECOND); // 星期几 Calendar.DAY_OF_WEEK用数字(1~7)表示(星期日~星期六) int day_of_week = cal.get(Calendar.DAY_OF_WEEK)-1; //0-上午;1-下午 int ampm = cal.get(Calendar.AM_PM); //当前年的第几周 int week_of_year = cal.get(Calendar.WEEK_OF_YEAR); //当前月的星期数 int week_of_month = cal.get(Calendar.WEEK_OF_MONTH); //当前月中的第几个星期 int day_of_week_in_month = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH); //当前年的第几天 int day_of_year = cal.get(Calendar.DAY_OF_YEAR);2:工具类
package com.dayatang.utils; import java.security.InvalidParameterException; import java.text.ParseException; import java.util.Calendar; import java.util.Date; public class DateUtils { private static final long MILLIS_IN_A_SECOND = 1000; private static final long SECONDS_IN_A_MINUTE = 60; private static final long MINUTES_IN_AN_HOUR = 60; private static final long HOURS_IN_A_DAY = 24; private static final int DAYS_IN_A_WEEK = 7; private static final int MONTHS_IN_A_YEAR = 12; //private static final int[] daysInMonth = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; /** * 最小日期,设定为1000年1月1日 */ public static final Date MIN_DATE = date(1000, 1, 1); /** * 最大日期,设定为8888年1月1日 */ public static final Date MAX_DATE = date(8888, 1, 1); /** * 根据年月日构建日期对象。注意月份是从1开始计数的,即month为1代表1月份。 * @param year 年 * @param month 月。注意1代表1月份,依此类推。 * @param day 日 * @return */ public static Date date(int year, int month, int date) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, date, 0, 0, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * 计算两个日期(不包括时间)之间相差的周年数 * * @param date1 * @param date2 * @return */ public static int getYearDiff(Date date1, Date date2) { if (date1 == null || date2 == null) { throw new InvalidParameterException( "date1 and date2 cannot be null!"); } if (date1.after(date2)) { throw new InvalidParameterException("date1 cannot be after date2!"); } Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); int year1 = calendar.get(Calendar.YEAR); int month1 = calendar.get(Calendar.MONTH); int day1 = calendar.get(Calendar.DATE); calendar.setTime(date2); int year2 = calendar.get(Calendar.YEAR); int month2 = calendar.get(Calendar.MONTH); int day2 = calendar.get(Calendar.DATE); int result = year2 - year1; if (month2 < month1) { result--; } else if (month2 == month1 && day2 < day1) { result--; } return result; } /** * 计算两个日期(不包括时间)之间相差的整月数 * * @param date1 * @param date2 * @return */ public static int getMonthDiff(Date date1, Date date2) { if (date1 == null || date2 == null) { throw new InvalidParameterException( "date1 and date2 cannot be null!"); } if (date1.after(date2)) { throw new InvalidParameterException("date1 cannot be after date2!"); } Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); int year1 = calendar.get(Calendar.YEAR); int month1 = calendar.get(Calendar.MONTH); int day1 = calendar.get(Calendar.DATE); calendar.setTime(date2); int year2 = calendar.get(Calendar.YEAR); int month2 = calendar.get(Calendar.MONTH); int day2 = calendar.get(Calendar.DATE); int months = 0; if (day2 >= day1) { months = month2 - month1; } else { months = month2 - month1 - 1; } return (year2 - year1) * MONTHS_IN_A_YEAR + months; } /** * 统计两个日期之间包含的天数。包含date1,但不包含date2 * * @param date1 * @param date2 * @return */ public static int getDayDiff(Date date1, Date date2) { if (date1 == null || date2 == null) { throw new InvalidParameterException( "date1 and date2 cannot be null!"); } Date startDate = org.apache.commons.lang3.time.DateUtils.truncate( date1, Calendar.DATE); Date endDate = org.apache.commons.lang3.time.DateUtils.truncate(date2, Calendar.DATE); if (startDate.after(endDate)) { throw new InvalidParameterException("date1 cannot be after date2!"); } long millSecondsInOneDay = HOURS_IN_A_DAY * MINUTES_IN_AN_HOUR * SECONDS_IN_A_MINUTE * MILLIS_IN_A_SECOND; return (int) ((endDate.getTime() - startDate.getTime()) / millSecondsInOneDay); } /** * 计算time2比time1晚多少分钟,忽略日期部分 * * @param time1 * @param time2 * @return */ public static int getMinuteDiffByTime(Date time1, Date time2) { long startMil = 0; long endMil = 0; Calendar calendar = Calendar.getInstance(); calendar.setTime(time1); calendar.set(1900, 1, 1); startMil = calendar.getTimeInMillis(); calendar.setTime(time2); calendar.set(1900, 1, 1); endMil = calendar.getTimeInMillis(); return (int) ((endMil - startMil) / MILLIS_IN_A_SECOND / SECONDS_IN_A_MINUTE); } /** * 计算指定日期的前一天 * * @param date * @return */ public static Date getPrevDay(Date date) { return org.apache.commons.lang3.time.DateUtils.addDays(date, -1); } /** * 计算指定日期的后一天 * * @param date * @return */ public static Date getNextDay(Date date) { return org.apache.commons.lang3.time.DateUtils.addDays(date, 1); } /** * 判断date1是否在date2之后,忽略时间部分 * * @param date1 * @param date2 * @return */ public static boolean isDateAfter(Date date1, Date date2) { Date theDate1 = org.apache.commons.lang3.time.DateUtils.truncate(date1, Calendar.DATE); Date theDate2 = org.apache.commons.lang3.time.DateUtils.truncate(date2, Calendar.DATE); return theDate1.after(theDate2); } /** * 判断date1是否在date2之前,忽略时间部分 * * @param date1 * @param date2 * @return */ public static boolean isDateBefore(Date date1, Date date2) { return isDateAfter(date2, date1); } /** * 判断time1是否在time2之后,忽略日期部分 * * @param time1 * @param time2 * @return */ public static boolean isTimeAfter(Date time1, Date time2) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(time1); calendar1.set(1900, 1, 1); Calendar calendar2 = Calendar.getInstance(); calendar2.setTime(time2); calendar2.set(1900, 1, 1); return calendar1.after(calendar2); } /** * 判断time1是否在time2之前,忽略日期部分 * * @param time1 * @param time2 * @return */ public static boolean isTimeBefore(Date time1, Date time2) { return isTimeAfter(time2, time1); } /** * 判断两个日期是否同一天(忽略时间部分) * * @param date1 * @param date2 * @return */ public static boolean isSameDay(Date date1, Date date2) { return org.apache.commons.lang3.time.DateUtils.isSameDay(date1, date2); } /** * 判断两个日历天是否同一天(忽略时间部分) * * @param date1 * @param date2 * @return */ public static boolean isSameDay(Calendar date1, Calendar date2) { return org.apache.commons.lang3.time.DateUtils.isSameDay(date1, date2); } /** * 将字符串形式的日期表示解析为日期对象 * * @param dateString * @return */ public static Date parseDate(String dateString) { try { return org.apache.commons.lang3.time.DateUtils.parseDate( dateString, new String[] { "yyyy-MM-dd", "yyyy-M-d", "yyyy-MM-d", "yyyy-M-dd" }); } catch (ParseException e) { return null; } } /** * 将字符串形式的时间表示解析为日期时间对象 * * @param timeString * @return */ public static Date parseTime(String timeString) { try { return org.apache.commons.lang3.time.DateUtils.parseDate( timeString, new String[] { "hh:mm:ss", "h:m:s", "hh:mm", "h:m" }); } catch (ParseException e) { return null; } } /** * 将字符串形式的日期时间表示解析为时间对象 * * @param timeString * @return */ public static Date parseDateTime(String timeString) { try { return org.apache.commons.lang3.time.DateUtils.parseDate( timeString, new String[] { "yyyy-MM-dd HH:mm:ss", "yyyy-M-d H:m:s", "yyyy-MM-dd H:m:s", "yyyy-M-d HH:mm:ss" }); } catch (ParseException e) { return null; } } /** * 计算两个日期之间包含的星期X的天数。 * * @param fromDate * 起始日期 * @param toDate * 结束日期 * @param dayOfWeek * 星期,例如星期三,星期四 * @return */ public static int getWeekDaysBetween(Date fromDate, Date toDate, int dayOfWeek) { int result = 0; Date firstDate = getFirstWeekdayBetween(fromDate, toDate, dayOfWeek); if (firstDate == null) { return 0; } Calendar aDay = Calendar.getInstance(); aDay.setTime(firstDate); while (aDay.getTime().before(toDate)) { result++; aDay.add(Calendar.DATE, DAYS_IN_A_WEEK); } return result; } /** * 获取在两个日期之间的第一个星期X * * @param fromDate * 起始日期 * @param toDate * 结束日期 * @param dayOfWeek * 星期,例如星期三,星期四 * @return */ public static Date getFirstWeekdayBetween(Date fromDate, Date toDate, int dayOfWeek) { Calendar aDay = Calendar.getInstance(); aDay.setTime(fromDate); while (aDay.getTime().before(toDate)) { if (aDay.get(Calendar.DAY_OF_WEEK) == dayOfWeek) { return aDay.getTime(); } aDay.add(Calendar.DATE, 1); } return null; } /** * 取得参数year指定的年份的总天数 * * @param year * @return */ public static int getDaysInYear(int year) { Calendar aDay = Calendar.getInstance(); aDay.set(year, 1, 1); Date from = aDay.getTime(); aDay.set(year + 1, 1, 1); Date to = aDay.getTime(); return getDayDiff(from, to); } /** * 取得指定年月的总天数 * * @param year * @param month * @return */ public static int getDaysInMonth(int year, int month) { Calendar aDay = Calendar.getInstance(); aDay.set(year, month, 1); Date from = aDay.getTime(); if (month == Calendar.DECEMBER) { aDay.set(year + 1, Calendar.JANUARY, 1); } else { aDay.set(year, month + 1, 1); } Date to = aDay.getTime(); return getDayDiff(from, to); } /** * 获得指定日期的年份 * * @param date * @return */ public static int getYear(Date date) { return getFieldValue(date, Calendar.YEAR); } /** * 获得指定日期的月份 * * @param date * @return */ public static int getMonth(Date date) { return getFieldValue(date, Calendar.MONTH) + 1; } /** * 获得指定日期是当年的第几天 * * @param date * @return */ public static int getDayOfYear(Date date) { return getFieldValue(date, Calendar.DAY_OF_YEAR); } /** * 获得指定日期是当月的第几天 * * @param date * @return */ public static int getDayOfMonth(Date date) { return getFieldValue(date, Calendar.DAY_OF_MONTH); } /** * 获得指定日期是当周的第几天 * * @param date * @return */ public static int getDayOfWeek(Date date) { return getFieldValue(date, Calendar.DAY_OF_WEEK); } private static int getFieldValue(Date date, int field) { if (date == null) { throw new InvalidParameterException("date cannot be null!"); } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(field); } /** * 获得指定日期之后一段时期的日期。例如某日期之后3天的日期等。 * @param origDate 基准日期 * @param amount 时间数量 * @param timeUnit 时间单位,如年、月、日等。用Calendar中的常量代表 * @return */ public static final Date dateAfter(Date origDate, int amount, int timeUnit) { Calendar calendar = Calendar.getInstance(); calendar.setTime(origDate); calendar.add(timeUnit, amount); return calendar.getTime(); } /** * 获得指定日期之前一段时期的日期。例如某日期之前3天的日期等。 * @param origDate 基准日期 * @param amount 时间数量 * @param timeUnit 时间单位,如年、月、日等。用Calendar中的常量代表 * @return */ public static final Date dateBefore(Date origDate, int amount, int timeUnit) { Calendar calendar = Calendar.getInstance(); calendar.setTime(origDate); calendar.add(timeUnit, -amount); return calendar.getTime(); } }
时间交集
public static Map<String, Date> dateIntersec(Date start1, Date end1, Date start2, Date end2) { Map<String, Date> dates = new HashMap<String, Date>(); Date start = new Date(); Date end = new Date(); if (start1.after(end1) || start2.after(end2)) { return null; } if (start1.after(end2) || start2.after(end1)) { return null; } if (start1.after(start2)) { start = start1; } else { start = start2; } if (end1.after(end2)) { end = end2; } else { end = end1; } dates.put("start", start); dates.put("end", end); return dates; }
相关推荐
KWDB 是一款面向 AIoT 场景的分布式多模数据库产品,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
做4.3这一节的时候的maple文件,仅供参考
stm32的实时时钟使用代码
基于go语言,使用gocv和socket实现摄像头视频传输项
jsoncpp不能正常解析,以及全角字符的问题,可以直接编辑使用.zip
在我们日常使用电脑的过程中,经常会遇到需要在不同网络环境下切换 IP 地址的情况。手动设置 IP 地址不仅繁琐,还容易出错。今天,我要向大家推荐一款超实用的网络管理工具 ——IP Switcher。 一、软件简介: IP Switcher 是一款功能强大的网络配置切换软件,它可以帮助用户在不同的网络环境下快速切换 IP 地址、子网掩码、网关、DNS 等网络设置,提高工作效率。 二、软件特点: 快速切换 IP Switcher 可以在几秒钟内完成网络配置的切换,无需手动设置 IP 地址、子网掩码、网关、DNS 等参数,大大节省了时间。 多种配置方案 用户可以根据不同的网络环境创建多个网络配置方案,每个方案可以设置不同的 IP 地址、子网掩码、网关、DNS 等参数。在需要切换网络环境时,只需选择相应的配置方案即可。 自动切换 IP Switcher 支持自动切换网络配置方案,可以根据用户设置的条件自动切换到相应的网络配置方案。例如,用户可以设置在连接到特定的无线网络时自动切换到相应的网络配置方案。 简单易用 IP Switcher 的界面简洁直观,操作非常方便。用户只需几个简单的步骤
tornado创建的一个web项目,实现了cookie,session,连接mysql和redis数据库,对主handler进行抽取,模拟登陆,图形化验证等一些功能业务_tornado_project.zip
mtk计算屏帧数的表格
fenlei20241031
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
爱心代码
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、物理应用 仿真:导航、地震、电磁、电路、电能、机械、工业控制、水位控制、直流电机、平面电磁波、管道瞬变流、刚度计算 光学:光栅、杨氏双缝、单缝、多缝、圆孔、矩孔衍射、夫琅禾费、干涉、拉盖尔高斯、光束、光波、涡旋 定位问题:chan、taylor、RSSI、music、卡尔曼滤波UWB 气动学:弹道、气体扩散、龙格库弹道 运动学:倒立摆、泊车 天体学:卫星轨道、姿态 船舶:控制、运动 电磁学:电场分布、电偶极子、永磁同步、变压器
摄像基本操作.ppt
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据