目录

1、Date

1、Date格式化工具——SimpleDateFormate用于时间的格式化

2、SimpleDateFormate中的常用方法

2、LocalDate与LocalTime

1、LocalDate的常用方法

2、LocalTime的创建、构造

3、LocalDate、LocalTime格式化工具——DateTimeFormatter

4、parse()与format()

3、calendar

4、时间戳

1、时间戳转换为自定义格式的时间字符串

1、时间戳转换为Date

5、时间间隔计算

1、Date

1、Date格式化工具——SimpleDateFormate用于时间的格式化

1、yyyy-MM-dd HH:mm:ss(24小时制)

2、yyyy-MM-dd HH:mm:ss(12小时制)

3、yyyy-MM-dd HH:mm:ss.SSS(年-月-日 时:分:秒.毫秒)

2、SimpleDateFormate中的常用方法

format(Date date)方法实现Date数据、Calendar数据转换为指定格式的字符串

parse(String dateStr)方法将时间格式的String转化为Date数据

import java.text.SimpleDateFormat;import java.util.Date;public class demo {public static void main(String[] args) {Date d=new Date();SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); System.out.println("今天的日期:"+df.format(d));System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000)));System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + (long)3 * 24 * 60 * 60 * 1000)));}}

2、LocalDate与LocalTime

LocalDate无法包含时间,LocalTime无法包含日期,LocalDateTime才能同时包含时间和日期。

1、LocalDate的常用方法

import java.text.ParseException;import java.time.DayOfWeek;import java.time.LocalDate;import java.time.temporal.TemporalAdjusters;public class demo {public static void main(String[] args) throws ParseException {// 获取今天的日期LocalDate today = LocalDate.now();// 今天是本月几号int dayOfMonth = today.getDayOfMonth();// 今天是周几(返回的是个枚举类型,需要再getValue())int dayOfWeek = today.getDayOfWeek().getValue();// 今天是今年中的第几天int dayOfYear = today.getDayOfYear();// 根据字符串取:严格按照yyyy-MM-dd验证,02写成2都不行,如何想改变格式通过DateTimeFormatter实现LocalDate endOfFeb = LocalDate.parse("2023-02-28");// 取本月第1天LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth());// 取本月第3天LocalDate secondDayOfThisMonth = today.withDayOfMonth(3);// 取本月最后一天,不用计算是28,29,30还是31LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());// 取下一天LocalDate firstDayOfNextMonth = today.plusDays(1);// 取2023年9月第一个周一LocalDate firstMondayOf2023 = LocalDate.parse("2023-09-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));System.out.println(firstDayOfNextMonth);}}
import java.time.LocalDate;import java.time.Period;import java.time.ZoneId;import java.util.Date;public class demo {public static void main(String[] args) {LocalDate beginTime = LocalDate.now();// 月份运算LocalDate entTime = beginTime.plus(Period.ofMonths(6));// LocalDate 转 DateDate date = Date.from(beginTime.atStartOfDay(ZoneId.systemDefault()).toInstant());}}

2、LocalTime的创建、构造

import java.time.LocalTime;public class demo {public static void main(String[] args) {LocalTime now = LocalTime.now();// 构造LocalTime zero = LocalTime.of(0, 0, 0);LocalTime mid = LocalTime.parse("12:00:00");}}

3、LocalDate、LocalTime格式化工具——DateTimeFormatter

import java.text.ParseException;import java.time.LocalDate;import java.time.format.DateTimeFormatter;public class demo {public static void main(String[] args) throws ParseException {LocalDate today = LocalDate.now();DateTimeFormatter formatters1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日");//formatters1 与 today 位置可以互换String text = formatters1.format(today);LocalTime now = LocalTime.now();//formatters2 与 now 位置可以互换DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("hh mm ss.SSS");String midStr = mid.format(formatter2);System.out.println(midStr);}}

4、parse()与format()

parse调用format调用
SimpleDateFormate

1、创建SimpleDateFormate,确定格式

2、传入时间字符串,sdf.parse(timeStr)

1、创建SimpleDateFormate,确定格式

2、sdf.format(date)

LocalDate

LocalDate.parse(timeStr)

字符串格式严格按照yyyy-MM-dd验证

1、创建DateTimeFormatter,确定格式

2、dtf.format(dateStr)

LocalTimeLocalTime.parse(timeStr)

1、创建DateTimeFormatter,确定格式

2、dtf.format(timeeStr)

3、calendar

getTime()获取时间,add()修改时间,get()获取指定部分时间

import java.util.Calendar;public class demo {public static void main(String[] args) {// 使用默认时区和语言环境获得一个日历Calendar cal = Calendar.getInstance();Date nowTime = calendar.getTime();calendar.add(Calendar.DATE, 5);Date startTime = calendar.getTime();// 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1System.out.println("年:" + cal.get(Calendar.YEAR));System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));System.out.println("分:" + cal.get(Calendar.MINUTE));System.out.println("秒:" + cal.get(Calendar.SECOND));}}

4、时间戳

Unix时间戳(Unix timestamp)定义为从1970年01月01日00时00分00秒(UTC)起至现在经过的总秒数,是我们北京时间的1970年01月01日08时00分00秒

13位时间戳精确到毫秒,10位精确到秒

1、时间戳转换为自定义格式的时间字符串

import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Date;public class demo {public static void main(String[] args) {//获取当前毫秒级时间戳Long time = System.currentTimeMillis();System.out.println(time);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");//返回的是指定格式的string类型时间String date = sdf.format(time);System.out.println(date);}

1、时间戳转换为Date

import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Date;public class demo {public static void main(String[] args) {//获取当前毫秒级时间戳Long time = System.currentTimeMillis();Date date = new Date(time);System.out.println(date);}

5、时间间隔计算

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class demo {public static void main(String[] args) throws ParseException {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");// 定义两个时间String startTime = "1949-10-1 00:00:00.000";String endTime = "2023-8-21 20:10:10.010";// 将两个String类型的时间转换为Date类型,从而计算差值、parse()方法的作用是将String类型的时间解析为Date类型Date d1 = df.parse(startTime);Date d2 = df.parse(endTime);System.out.println((((d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000))) / 365 + "年");// 以下总和为时间差System.out.println((d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000) + "天");System.out.println((((d2.getTime() - d1.getTime()) / (60 * 60 * 1000)) % 24) + "小时");System.out.println((((d2.getTime() - d1.getTime()) / 1000) % 60) + "分钟");System.out.println(((d2.getTime() - d1.getTime()) / (60 * 1000)) % 60 + "秒");System.out.println((((d2.getTime() - d1.getTime())) % 1000) + "毫秒");}}