目录
DATE_ADD(NOW(),INTERVAL -40 day)
DATE_SUB(NOW(),INTERVAL 40 day)
MySQL
DATE_FORMAT(date,format)
作用:指定日期格式
date:表示时间字段
format:填入自己需要得到的日期字段,如%Y-%m-%d %H:%i:%s
eg:DATE_FORMAT( now() , '%Y') 结果:22
eg:
SELECT tentant_name,customer_phone,email,DATE_FORMAT( dead_time, '%Y-%m-%d') dead_time,tentant_id,gmt_create FROM base_tentant;
DATE_ADD(NOW(),INTERVAL -40 day)
作用:获取指定的时间
select date_add(now(), interval 1 day); - 加1天
select date_add(now(), interval 1 hour); -加1小时
select date_add(now(), interval 1 minute); - 加1分钟
select date_add(now(), interval 1 second); -加1秒
select date_add(now(), interval 1 microsecond);-加1毫秒
select date_add(now(), interval 1 week);-加1周
select date_add(now(), interval 1 month);-加1月
select date_add(now(), interval 1 quarter);-加1季
select date_add(now(), interval 1 year);-加1年
MySQL adddate(), addtime()函数,可以用date_add() 来替代
DATE_SUB(NOW(),INTERVAL 40 day)
作用:获取指定日期
DATE_SUB(NOW(),INTERVAL 40 day) = DATE_ADD(NOW(),INTERVAL -40 day)
DATE_SUB(NOW(),INTERVAL -40 day) = DATE_ADD(NOW(),INTERVAL 40 day)
concat(字符串,拼接内容)
作用:拼接字符串
eg:concat( DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - 1 YEAR), '%Y' ),'-01-01')
结果:2021-01-01
针对此日期格式的各种转换:
'2022-01-31 15:06:23'
1、转换为日期格式
select DATE_FORMAT('2022-01-31 15:06:23','yyyy-MM-dd');
select to_date('2022-01-31 15:06:23');
2、转换为年
select year('2022-01-31 15:06:23');
3、转换为月
select month('2022-01-31 15:06:23');
4、转换为天
select day('2022-01-31 15:06:23');
5、转换为小时
select hour('2022-01-31 15:06:23');
6、转换为分钟
select minute('2022-01-31 15:06:23');
7、转换为秒
select second('2022-01-31 15:06:23');
Java
LocaklDate 与 Date 互转
//Date 转 LocalDateTime
Date date = new Date();
//Wed Nov 02 16:27:40 CST 2022
//方法一
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
//2022-11-02T16:27:40.918
//方法二
LocalDateTime localDateTime1 = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
//LocalDateTime 转 Date
Date date1 = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
Date 类
Date类的作用:java.util.Date 代表一个精确的时间,精确到毫秒。
获取当前系统时间
//创建Date对象,表示当前系统时间
Date d = new Date();
System.out.println(d); //Sat Sep 11 14:36:59 CST 2021
获取当前时间的毫秒值
//long getTime() :获取当前时间的毫秒值
long time = d.getTime();
System.out.println("time = " + time);//1631342219139
注:设置时间可以创建Date对象时,把毫秒数放进构造器内
//时间设置相关
//Date(long date) :
//使用毫秒数创建Date对象
//设置时间(在1970年1月1日 00:00:00基础上增加设置的毫秒值)
Date d2 = new Date(1000L); //在1970年1月1日 00:00:00 加上1秒
//Thu Jan 01 08:00:01 CST 1970 中国时间在东8区,所以是 08:00:01
System.out.println(d2);
也可以通过对象。settime(毫秒数)设置
//void setTime(long time) :
//设置时间(在1970年1月1日 00:00:00基础上增加设置的毫秒值)
Date d3 = new Date();
d3.setTime(2000L); //在1970年1月1日 00:00:00 加上2秒
System.out.println(d3); //Thu Jan 01 08:00:02 CST 1970
SimpleDateFormat类 --设置时间格式
//1.使用无参构造方法创建转换对象
//使用默认格式转换日期
SimpleDateFormat sdf = new SimpleDateFormat();
//2. 日期格式化:将Date对象转为字符串
//String format(Date date)
Date date = new Date();
String strDate = sdf.format(date);
System.out.println(strDate); //2021/9/9 下午3:00
//这是simpledateformat的默认格式
注:可以通过传入参数来改变日期的指定格式
//\t 制表符 Tab \n 换行
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm E\nyyyy/MM/dd");
String d = sdf2.format(date);
System.out.println(d);
//17:19 周六
//2021/09/11
Calender类
获取当前时间的日历类
Calendar c = Calendar.getInstance();
get(int field) 获取指定日历字段的值
get(int field) 获取指定日历字段的值
获取年
int year = c.get(Calendar.YEAR); //年
System.out.println("year = " + year); //year = 2022
获取月 (0-11 表示1-12月)
int month = c.get(Calendar.MONTH)+1; //月(0-11 表示1-12月)
System.out.println("month = " + month); //month = 9
获取 日
int date = c.get(Calendar.DATE); //日期
System.out.println("date = " + date); //date = 9
获取 时(12和24制),分,秒
int hour12 = c.get(Calendar.HOUR); //12小时制
int hour24 = c.get(Calendar.HOUR_OF_DAY); //24小时制
System.out.println("hour12 = " + hour12);
System.out.println("hour24 = " + hour24);
int minute = c.get(Calendar.MINUTE); //分
System.out.println("minute = " + minute);
int second = c.get(Calendar.SECOND); //秒
获取 周 注:1~7表示周日~周六
int index = c.get(Calendar.DAY_OF_WEEK)-1;
//0~6 表示索引 String[] weeks = {"周日","周一","周二","周三","周四","周五","周六"};
System.out.println(weeks[index]);
Date getTime() 将Calendar转为Date对象
Date date1 = c.getTime();
System.out.println(date1);
getTimeInMillies() 返回该日历时间的毫秒值。
long millis = c.getTimeInMillis();
System.out.println(millis);
3种获取毫秒值的方法
long t1 = System.currentTimeMillis(); //推荐方式
long t2 = new Date().getTime();
long t3 = Calendar.getInstance().getTimeInMillis();
set(int field, int value) 设置某个日历字段的值
set(int field, int value) 设置某个日历字段的值
Calendar c = Calendar.getInstance();
//set(int field, int value) 设置某个日历字段的值
c.set(Calendar.YEAR, 2008); //年设置为2008
c.set(Calendar.MONTH, 7); //月设置为8月,因为月份以0开头,所以7表示八月
c.set(Calendar.DATE,8);//日设置为8
set(int year, int month, int date) 设置年,月,日
//直接设置全部年月日时分秒也行
c.set(2008, 7,8);
c.set(2008, Calendar.AUGUST,8);
add(int field, int amount) 添加或减去某个日历字段的值。
add(int field, int amount) 添加或减去某个日历字段的值。
//add(int field, int amount) 添加或减去某个日历字段的值。
//2021年9月9号,29天之前是几月几号
Calendar today = Calendar.getInstance();
today.add(Calendar.DATE,-29);
获得当月第一天
calendar.getActualMinimum(calendar.DAY_OF_MONTH)
getActualMaximum(calendar.DAY_OF_MONTH 获得当月最后一天
获取当月15号
int year = calendar.get(Calendar.YEAR);//年份
int month = calendar.get(Calendar.MONTH) + 1;//月份
int actualMinimum = calendar.getActualMinimum(calendar.DAY_OF_MONTH);
String Fifteenday = String.valueOf(year)+"-"+month+"-"+(actualMinimum+14);
Date FifteenTime = sdf.parse(Fifteenday);
获取当月最后一天
int actualMaximum = calendar.getActualMaximum(Calendar.DATE);
String endMonther = String.valueOf(year)+"-"+month+"-"+(actualMaximum-7);
Date endMonthertime = sdf.parse(endMonther);
判断是否超过3天
//判断时间是否超过3天IMilestoneOverTimeService
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date pushTime = milestoneOverTime.getPushTime();/*要判断的时间*/
Calendar cal = Calendar.getInstance();
cal.setTime(pushTime);//Date转换为Calendar
cal.add(Calendar.DATE, 3);//将日期往后推3天,减少3天则-3
String after = sdf.format(cal.getTime());
//Calendar转换为Date,再转换为String --3天后的时间
long time = sdf.parse(after).getTime(); //--3天后的时间
long nowTime = new Date().getTime();
//long nowTime = sdf.parse("2022-11-04").getTime();//-----测试
Boolean flag=true;
if (nowTime>=time){//当前时间大于推送3天后的时间