一、Date类型
- 将Date转为字符串
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
- 将字符串转为Date
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Date date = df.parse("2018-08-08 20:08:08");
- 将Date转为时间戳
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Date date = df.parse("2018-08-08 20:08:08");
long time = date.getTime();
如果遇到比较时间大小的,都使用时间戳的形式比较大小。
二、LocalDateTime类型
- 将LocalDateTime转为时间戳
Long milliSecond = endTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
- 将时间戳转为LocalDateTime类型
LocalDateTime dateTime =
new Date(时时间戳).toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
三、MySQL中时间转换
- 将字符出转化为时间类型
select FROM_UNIXTIME('%H:%i:%S','22:23:00')
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
- 将时间转为秒
SELECT UNIX_TIMESTAMP(NOW());
SELECT UNIX_TIMESTAMP('2019-11-25 11:38:55');
- 将秒转为时间类型
SELECT FROM_UNIXTIME(1560149257,'%Y-%m-%d %H:%i:%s');
如果遇到十分秒比较的情况几下,转换为秒是不太好转,select TIME_TO_SEC(‘22:00:00’);这个方法转过来的似乎不太正确。如果数据库存的时分秒为varchar类型的,可以使用FROM_UNIXTIME函数转为时间类型再做比较。