常用时间操作

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());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值