计算小于7天的数据
DATE_SUB(DATE_ADD(b.make_date, INTERVAL + esfm.deadline DAY), INTERVAL 7 DAY) <= CURRENT_DATE
DATE_SUB(date,INTERVAL expr type) 函数从日期减去指定的时间间隔。
DATE_ADD(date,INTERVAL expr type) 函数向日期添加指定的时间间隔。
java8: 计算时间差值
Duration.between(start_time, end_time).toMillis()
Duration与Period相对应,Period用于处理日期,而Duration计算时间差还可以处理具体的时间,也是通过调用其静态的between方法,该方法为between(Temporal startInclusive,Temporal endExclusive),因此可以传入两个Instant的实例(Instant实现了Temporal接口),并可以以毫秒(toMills)、秒(getSeconds)等多种形式表示得到的时间差。
public static void main(String[] agrs) {
int n = 10;
int[] arr = SortTestHelper.generateRandomArray(n, 0, n);
int[] arr2 = SortTestHelper.copy(arr, n);
// int[] te=new int[]{2,6,3,1,4,7,5,8,9,10};
System.out.println();
Instant start_time = Instant.now();// 开始时间
SelectSort.SelectSort(arr, n);
Instant end_time = Instant.now();// 结束时间
SortTestHelper.printArray(arr, n);
System.out.println("时间差为:" + Duration.between(start_time, end_time).toMillis());
start_time = Instant.now();// 开始时间
insertionSort.insertionSort(arr2, n);
end_time = Instant.now();// 结束时间
SortTestHelper.printArray(arr2, n);
System.out.println("时间差为:" + Duration.between(start_time, end_time).toMillis());
}
一、类型转换
String 类型转localDate
LocalDate beginDateTime = LocalDate.parse(beginDate, DateTimeFormatter.ofPattern(“yyyy-MM-dd”));
date类型转localDate
Date dates = new SimpleDateFormat(“yyyyMM”).parse(cycle);
Instant instant = dates.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDate localDate = instant.atZone(zoneId).toLocalDate();
二、LocalDate – API
类方法:
1、LocalDate nowDate = LocalDate.now(); 获取当前日期:2019-03-21
2、LocalDate formatDate = LocalDate.parse("2018-08-08"); 自定义时间:2018-08-08
实例方法:
1、nowDate.getDayOfMonth() :21 (获取当天所属本月中的第几天)
2、nowDate.getDayOfYear() :80 (获取当天所属本年中的第几天)
3、nowDate.getDayOfWeek() :THURSDAY (获取当天所属本周的周几)
nowDate.getDayOfWeek() .getValue() :4
4、nowDate.getMonth() :MARCH (获取当月所属本年的第几月,与new Date() 相比它是从1开始,抛弃了之前的从0开始)
nowDate.getMonth().getVlue():3
nowDate.getMonthVlue() :3
5、nowDate.getYear() :2019 (获取年)
6、nowDate.getEra() :CE (获取次日期适用的时代)
7、nowDate.with(TemporalAdjusters.firstDayOfMonth()) :2019-03-01(获取本月第一天)
8、nowDate.withDayOfMonth(2) :2019-03-02(获取本月第二天)
9、nowDate.with(TemporalAdjusters.lastDayOfMonth()) :2019-03-01(获取本月最后一天,无须再判断28、29、30、31)
10、nowDate.plusDays(1) :2019-03-22(获取下一天日期)
注:TemporalAdjusters类中有许多常用的特殊的日期的方法(类方法),使用时可以仔细查看,可以很大程度减少日期判断的代码量!
三、LocalTime – API
类方法:
LocalTime nowTime = LocalTime.now(); 获取当前时间:16:45:51.591
实例方法:
1、nowTime.getHour() :16(获取小时数)
2、nowTime.getMinute() :45(获取分钟数)
3、nowTime.getSecond() :51(获取秒数)
4、nowTime.getNano() :805000000(获取纳秒数)
5、LocalTime zero = LocalTime.of(0, 0, 0) :00:00:00 (构建自定义时间)
LocalTime mid = LocalTime.parse("12:00:00") : 12:00:00
四、LocalDateTime – API
类方法:
1、LocalDateTime nowDateTime = LocalDateTime.now(); 获取当前日期时间:2019-03-21T16:45:51.591
2、DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String nowDateTime = LocalDateTime.now().format(formatter);
使用自定义格式器DateTimeFormatter替换了Java8之前的SimpleDateFormat
实例方法:基于上方LocalDate与LocalTime的实例方法,名字相同,可直接调用
五、JDBC与Java8中的Date/Time API关联问题
最新的JDBC整合了Java8中的Date/Time API,将Java8中的Date/Time类型与数据库类型进行了映射
数据库类型 -> Java类型
date -> LocalDate
time -> LocalTime
timestamp -> LocalDateTime
public static String getDate(String s,int type) throws ParseException {
//给定模式(这里给定的模式须与给定日期字符串格式匹配)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(s);
Calendar cal = Calendar.getInstance();
cal.setTime(date);//设置起时间
if (type == 1) {
cal.add(Calendar.YEAR, 1); //增加一年
}else if (type == 2) {
cal.add(Calendar.MONTH, 6); //增加半年
}else if (type == 3) {
cal.add(Calendar.MONTH, 3); //增加一个季度
}else if (type == 4) {
cal.add(Calendar.MONTH, 1); //增加一个月
}else if (type == 5){
cal.add(Calendar.DAY_OF_WEEK, 1); //增加一个星期(7天)
}else if (type == 6){
cal.add(Calendar.DATE, 1); //增加一个天
}
String dateStr = sdf.format(cal.getTime());
return dateStr;
}
//测试
public static void main(String[] args) throws ParseException {
//输出增加半年之后的日期
System.out.println(getDate("2020-02-23",2));
}