java日期类
- Date类
- Calendar类
- SimpleDateFormat类
- 新增日期时间类-LocalDateTime
- 新增的日期时间格式化类-DateTimeFormatter
Date类
Date类是我们常用的一个日期和时间的对象,用于记录某一个含日期的、精确到毫秒的时间,此类在 java.util 包中,并不是java.sql中的Date
常用的构造方法:
- Date();
使用当前日期和时间初始化对象。 - Date(long date);
接收一个参数创建对象,该参数是从1970年1月1日起的毫秒数。
常用的方法:
- getYear();
返回年份,使用时需要加上1900。 - getMonth();
返回月份,范围是0~11,使用时需要加1。 - getDate();
返回日。 - getTime();
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。 - toGMTString();
转换成GMT时区。 - toLocaleString();
转换成本地时区。
示例:
Date date = new Date();
System.out.println(date); //Wed Aug 26 09:16:41 CST 2020
Date date2 = new Date(System.currentTimeMillis()); //Wed Aug 26 09:16:41 CST 2020
System.out.println(date2);
System.out.println(date.getYear() + 1900); //年份 必须加上1900
System.out.println(date.getMonth() + 1); //月份 范围0~11 必须加上1
System.out.println(date.getDate()); //日 范围1~31 不加1
//返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数
System.out.println(date.getTime()); //1598404601154
//转换成 String
System.out.println(date.toString());//Wed Aug 26 09:16:41 CST 2020
//转换成GMT时区
System.out.println(date.toGMTString());//26 Aug 2020 01:16:41 GMT
//转换成本地时区
System.out.println(date.toLocaleString());//2020-8-26 9:16:41
Calendar类
java.util.Calendar
日历类Calendar更多的是代表年 月 日 周 星期 上午 下午 夏时令等这样内容
通过Calendar.getInstance()方法得到实例。
通过get(int field)方法获取所需要的时间信息,参数是该类中的一些静态成员变量,比如YEAR、MONTH、DAY_OF_MONTH、HOUR 、MINUTE、SECOND
示例:
//获取实例
Calendar calendar = Calendar.getInstance();
//年份
System.out.println(calendar.get(Calendar.YEAR));
//月份
System.out.println(calendar.get(Calendar.MONTH) + 1);
//该月中的第多少天
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//该年中的是第多少天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
//时
System.out.println(calendar.get(Calendar.HOUR));
//分
System.out.println(calendar.get(Calendar.MINUTE));
//秒
System.out.println(calendar.get(Calendar.SECOND));
SimpleDateFormat类
java.text.SimpleDateFormat
格式化输出日期,此类提供了一些预定义字符串或者称之为占位符:
yyyy:年
MM:月
dd: 日
HH: 小时
mm: 分钟
ss: 秒
示例:
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));
新增日期时间类-LocalDateTime
- LocalDate类-本地日期类
LocalDate d = LocalDate.now(); //当前日期
- LocalTime类-本地时间类
LocalTime t = LocalTime.now(); //当前时间
- LocalDateTime类-本地日期时间类
LocalDateTime dt = LocalDateTime.now(); //当前日期和时间
另外一种比较规范的用法:
LocalDateTime dt = LocalDateTime.now(); //当前日期和时间
LocalDate d = dt.toLocalDate(); //转换到当前日期
LocalTime t = dt.toLocalTime(); //转换到当前时间
获取年月日时分秒的用法:
System.out.println(dt.getYear()); //年
System.out.println(dt.getMonth()); //月
System.out.println(dt.getDayOfYear()); //一年中的第几天
System.out.println(dt.getDayOfMonth()); //一月中的第几天
System.out.println(dt.getDayOfWeek()); //一周中的第几天
System.out.println(dt.getHour()); //时
System.out.println(dt.getMinute()); //分
System.out.println(dt.getSecond()); //秒
根据指定的日期时间创建对象的用法:
LocalDate date = LocalDate.of(2020, 8, 26); //2020-08-26
LocalTime time = LocalTime.of(1, 2, 3); //01:02:03
LocalDateTime dateTime1 = LocalDateTime.of(2020, 8, 26, 1, 2, 3);
LocalDateTime dateTime2 = LocalDateTime.of(date, time);
根据标准格式创建对象的用法:
ISO 8601规定的日期和时间格式
LocalDateTime dateTime = LocalDateTime.parse("2020-08-26T01:02:03");
LocalDate date = LocalDate.parse("2020-08-26");
LocalTime time = LocalTime.parse("01:02:03");
新增的日期时间格式化类-DateTimeFormatter
如果要自定义输出的格式,或者要把一个非ISO 8601格式的字符串解析成LocalDateTime,可以使用新的DateTimeFormatter:
//自定义格式化
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
System.out.println(dtf.format(LocalDateTime.now()));
//用自定义格式解析
LocalDateTime dt = LocalDateTime.parse("2020/08/26 10:19:39", dtf);
System.out.println(dt);