Date
Date是非线程安全的
// Date转字符串
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dateStr = sf.format(date);
//字符串转Date
String string = "2016-10-24 21:59:06";
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sf.parse(string);
//打印毫秒
Date date = new Date();
System.out.println(date.getTime());
Thread.sleep(1);
//比较时间
Date date1 = new Date();
System.out.println(date.after(date1));
System.out.println(date.before(date1));
//小于为-1,大于为1,相等为0
System.out.println(date.compareTo(date1));
Calendar
创建时间
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR);
int min = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
System.out.println(year+"-"+month+"-"+day+" "+hour+":"+min+":"+second);
//变更时间
calendar.add(Calendar.DATE,1);
getTime(calendar);
//获取时间毫秒
System.out.println(calendar.getTimeInMillis());
//设置时间
calendar.set(2009,10,12,14,12,55);
getTime(calendar);
//时间比较,小于0是小
Calendar current = Calendar.getInstance();
System.out.println(calendar.compareTo(current)<=0);
LocalDate
//获得当天日期
LocalDate now = LocalDate.now();
System.out.println(now);
//构造指定日期
LocalDate date1 = LocalDate.of(2009,12,21);
System.out.println(date1);
//根据字符串构造日期
LocalDate towDay=LocalDate.parse("2020-01-11");
System.out.println(towDay);
//打印年月日信息
LocalDate date = LocalDate.now();
System.out.println(date.getYear()+"-"+date.getMonthValue()+"-"+date.getDayOfMonth());
//比较两个日期
System.out.println(now.equals(date1));
//先比较年份,返回年份差值,年份一样返回月差值,月份一样返回日差值
System.out.println(now.compareTo(date1));
System.out.println(now.isBefore(date1));
System.out.println(now.isAfter(date1));
//日期增加
LocalDate newDate = now.plus(1, ChronoUnit.DAYS);
LocalDate newDate2 = now.plusDays(1);
System.out.println("newDate=" + newDate);
System.out.println("newDate2=" + newDate2);
//使用预定义格式解析与格式化日期
// 字符串转date
String dateText = "20180924";
LocalDate date2 = LocalDate.parse(dateText, DateTimeFormatter.BASIC_ISO_DATE);
System.out.println("newformat=" + date2);
// date转字符串
dateText = date2.format(DateTimeFormatter.ISO_DATE);
System.out.println("dateText=" + dateText);
LocalTime
//获取当前时间 ,只包含时间
LocalTime time = LocalTime.now();
System.out.println(time);
//时间增加
LocalTime newTime = time.plusHours(2);
System.out.println("newTime=" + newTime);
LocalDateTime
//自定义格式转换
LocalDateTime nowTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTimeStr = nowTime.format(formatter);
System.out.println(dateTimeStr);
// 字符串转日期时间
String datetimeText = "1999-12-31 23:59:59";
LocalDateTime datetime = LocalDateTime.parse(datetimeText, formatter);
System.out.println(datetime);
相关类
Instant 时间戳
// 默认获取UTC时区
Instant instant=Instant.now();
instant.toEpochMilli()
Duration 持续时间、时间差
LocalDateTime from = LocalDateTime.now();
LocalDateTime to = LocalDateTime.now().plusDays(1);
Duration duration=Duration.between(from, to);
long days=duration.toDays();
Peroid 时间段
Period period=Period.of(2020, 1, 11);
Period period1 = Period.between(LocalDate.now(), LocalDate.now().plusYears(1));
ZoneOffset 时区偏移量,比如:+8:00
ZonedDateTime 带时区的日期时间
Clock 时钟,可用于获取当前时间戳
java.time.format.DateTimeFormatter 时间格式化类
mysql
获取当前时间
select now();
select SYSDATE();
now和sysdate的区别是,sysdate是函数执行的时间,now类似打了个标签变量
获取日期
select curdate();
select curtime();
date/时间转字符串
select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s');
select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s')
字符串转date
select str_to_date('2008-08-08 22:23:01', '%Y-%m-%d %H:%i:%s');
日期增加
select DATE_ADD(CURDATE(),INTERVAL 1 day);
日期减少
select DATE_SUB(CURDATE(),INTERVAL 1 day);
日期相减
select datediff('2008-08-08', '2008-08-01');
时间相减
select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00');
星期里第几天
SELECT now(),dayofweek(now());
星期名字
select dayname(now()),monthname(now());
当月最后一天
select last_day(curdate());
当月第一天
减去今天的天数就是上月最后一天,再加1
select date_add(curdate(),interval -day(curdate())+1 day) ;
下月第一天
当月最后一天,加1
select date_add(last_day(curdate()),interval 1 day)
当月第几天
select day(curdate());