0
点赞
收藏
分享

微信扫一扫

Java高级编程知识—3、日期API

小黑Neo 2022-01-05 阅读 59

文章目录

3、 日期API

获取时间戳:long System.currentTimeMillis()

3.1 JDK8之前

java.util.Date

  1. 构造器
    • new Date():创建一个对应当前时间的Date对象
    • new Date(long mills):创建指定时间戳的Date对象
  2. 方法
    • toString():显示当前Date对象的年月日时分秒
    • getTime():获取当前Date对象对应的时间戳(毫秒数)

java.sql.Date

对应数据库中日期类型的变量

  1. 构造器
    • new Date(long millis):创建指定时间戳的Date对象
  2. 方法
    • toString():显示当前Date对象的年月日

将java.util.Date对象转换为java.sql.Date对象:

Date date1 = new Date();
    System.out.println(date1);  //Tue Jan 04 11:24:28 GMT+08:00 2022
java.sql.Date date2 = new java.sql.Date(date1.getTime());
    System.out.println(date2);  //2022-01-04

SimpleDateFormat

对日期Date类的格式化和解析

  1. 格式化:日期——>字符串:调用format(Date)方法返回字符串
  2. 解析:字符串——>日期:调用parse(String)方法返回Date对象
    • 要求:字符串必须符合SimpleDateFormat识别的格式(通过构造器参数体现)

使用默认构造器

        SimpleDateFormat sdf = new SimpleDateFormat();
//        格式化:日期→字符串
        Date date = new Date();
        System.out.println(date);  //Tue Jan 04 14:01:11 GMT+08:00 2022
        String format = sdf.format(date);
        System.out.println(format);  //22-1-4 下午2:01
//        解析:字符串→日期
        String str = "18-12-31 下午5:58";
        Date date1 = sdf.parse(str);
        System.out.println(date1);  //Mon Dec 31 17:58:00 GMT+08:00 2018

使用带参的构造器

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = new Date();
//        格式化:日期→字符串
		String str = sdf.format(date);
		System.out.println(str);  //2022-01-04 14:07:45
//        解析:字符串→日期
		Date date1 = sdf.parse("1999-05-24 14:01:30");
		System.out.println(date1);  //Mon May 24 14:01:30 GMT+08:00 1999

练习:将生日字符串转化为sql中date格式数据

String birth = "1999-05-24";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birth);  
	System.out.println(date);  //Mon May 24 00:00:00 GMT+08:00 1999
java.sql.Date date1 = new java.sql.Date(date.getTime()); 
	System.out.println(date1); //1999-05-24

Calendar

Calendar是抽象类

实例化方法:默认为当前日期

  1. 创建其子类(GregorianCalendar)的对象
  2. 调用其静态方法getInstance()

常用方法

get():获取一些常用的属性,如该日期是该月的第几天、该年的第几天等

int days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));

set():对calendar对象本身做修改日期

calendar.set(Calendar.DAY_OF_YEAR,200);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

add():对calendar对象本身做增加日期

calendar.add(Calendar.DAY_OF_MONTH,5);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));

getTime():日历类——>Date对象

Date date = calendar.getTime();
System.out.println(date);  //Sun Jul 24 14:38:38 GMT+08:00 2022

setTime():Date对象——>日历类

Date date1 = new Date();
calendar.setTime(date1);

注:月份从0开始,1月是0,2月是1…,12月是11

​ 星期从周日开始,周日是1,周一是2…,周六是7

3.2 JDK8之后

java.time.LocalDateTime

LocalDate、LocalTime、LocalDateTime类

注:

  • LocalDateTime使用频率更高
  • 类似于Calendar

now():获取当前的日期、时间、日期+时间

LocalDate localDate = LocalDate.now(); //2022-01-04
LocalTime localTime = LocalTime.now();  //22:16:46.597
LocalDateTime localDateTime = LocalDateTime.now();  //2022-01-04T22:16:46.597

of():设置指定的年月日时分秒

LocalDateTime localDateTime1 = LocalDateTime.of(2022,5,24,14,20,30);  
 System.out.println(localDateTime1);  //2022-05-24T14:20:30

withXxx():设置相关的属性并返回新的日期对象,体现不可变性

plusXxx():增加相关的属性并返回新的日期对象,体现不可变性

minusXxx():减少相关的属性并返回新的日期对象,体现不可变性

Instant

类似于java.util.Date类

now():获取本初子午线对应的标准时间

Instant now = Instant.now();
System.out.println(now); //2022-01-04T14:43:30.248Z
//添加时间的偏移量
OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime); //2022-01-04T22:43:30.248+08:00

toEpochMilli():获取自1970-1-1 0:0:0开始的时间戳毫秒数

ofEpochMilli():通过给定的毫秒数,获取Instant实例

DateTimeFormatter

类似于SimpleDateFormat

实例化方式

  • 方式一:预定义的标准格式。如:DateTimeFormatter.ISO_LOCAL_DATE_TIME、ISO_LOCAL_DATE、ISO_LOCAL_TIME

  • 方式二:本地化相关的格式。如:DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT、FormatStyle.MEDIUM、FormatStyle.LONG、FormatStyle.FULL)

  • 重点:方式三:自定义格式。如:DateTimeFormatter.ofPattern(“yyyy-MM-dd hh:mm:ss E”)

    • 格式化

      DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd a hh:mm:ss E");
      System.out.println(dateTimeFormatter.format(LocalDateTime.now()));
      //2022-01-04 下午 11:09:05 星期二
      
    • 解析

      TemporalAccessor parse = dateTimeFormatter.parse("1999-05-24 下午 02:30:05 星期一");
      System.out.println(parse);  //{},ISO resolved to 1999-05-24T14:30:05
      

我的学习笔记有更多精彩内容哦
Java编程知识专栏

举报

相关推荐

0 条评论