1.在程序传参的时间利用java 日期转化中设置时区来转
/**
*String to Date
* @param date
* @param dateFormate
* @return
*/
public static Date parseStringToDateTimeZone(String date , String dateFormate,String timeZone){
if(StringUtils.isEmpty(dateFormate)){
dateFormate = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormate);//注意月份是MM
simpleDateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));
Date dateResult = null;
try {
dateResult = simpleDateFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return dateResult;
}
public static void main(String[] args) {
Date date=parseStringToDateTimeZone("2021-02-07 09:43:12",null,"GMT-8");
System.out.println(date);
}
2.利用数据库中日期函数来转化
2.1数据库的日期函数
。
2.2.1
now() 获得当前日期+时间(date + time)函数:now() now()获取的是服务器时间
2.2.2
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:
mysql> select now(), sleep(3), now();
±--------------------±---------±--------------------+
| now() | sleep(3) | now() |
±--------------------±---------±--------------------+
| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
±--------------------±---------±--------------------+
2.2.3获得当前 UTC 日期时间函数:
utc_date(), utc_time(), utc_timestamp()
mysql> select utc_timestamp(), utc_date(), utc_time(), now()
±--------------------±-----------±-----------±--------------------+
| utc_timestamp() | utc_date() | utc_time() | now() |
±--------------------±-----------±-----------±--------------------+
| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |
±--------------------±-----------±-----------±--------------------+
因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。
获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()
来进行国际化获取时间再通过
2.2为日期减去或者添加一个时间间隔
:date_sub()或者date_add()来获取时间段内的数据
DATE_SUB(date,INTERVAL expr type)
Type 的 值 可以是 毫秒,秒等
Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
当我们查询 某创建时间 大于当前utc_time()前一分钟的数据时参考一下sql
SELECT r.id,r.NAME,r.type,r.role_group_id roleGroupId,r.description,r.create_time,r.modify_time ,utc_date(),curtime()
FROM sys_role r where r.account_id = 110
and r.create_time >= date_sub(utc_time(),interval 1 minute)