java中日期时间的API

185 阅读2分钟

JDK8之前的日期时间API

image.png

image.png

如何将java.util.Date对象转化为java.sql.Date对象?

情况1:

image.png

情况2:

image.png

image.png

下面是对日期时间API的代码总结(挺重要的)

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

//jdk8之前的日期时间的API测试
//1.System类中currentTimeMillis();
//2.java.util.Date和子类java.sql.Date
//3.SimpleDateFormat
//4.Calendar
public class DateTimeTest {
/*3.SimpleDateFormat的使用:SimpleDateFormat对日期Date类的格式化和解析
    1.两个操作:
        1.1:格式化:日期--->字符串
        1.2:解析:字符串--->日期
      2.SimpleDateFormat的实例化  */
    @Test
    public void testSimpleDateFormat() throws ParseException {
        //实例化SimpleDateFormat:使用默认的构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        //格式化:日期--->字符串
        Date date = new Date();
        System.out.println(date);
        String format = sdf.format(date);
        System.out.println(format);
        //解析:字符串--->日期
        String str = "2022/5/9 下午3:47";//格式得跟上面解析出来的日期相同
        Date date1 = sdf.parse(str);
        System.out.println(date1);
    //***********************
    //实例化SimpleDateFormat:使用指定格式的构造器("yyyy-MM-dd hh:mm:ss");
    //格式化
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String format1 = sdf1.format(date);
    System.out.println(format1);
    //解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现)
    //否则就会抛异常
    Date parse = sdf1.parse("2022-05-09 03:55:38");
    System.out.println(parse);
}
/*
练习1:字符串"2020-09-08"转化为java.sql.Date1
使用SimpleDateFormat
 */
@Test
        public void test1SimpleDateFormat() throws ParseException {
    String str = "2020-09-08";
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date parse = simpleDateFormat.parse(str);
    //System.out.println(parse);此时得到的是util下的Date
    java.sql.Date birthDate = new java.sql.Date(parse.getTime());
    System.out.println(birthDate);
}
//练习二:“三天打渔两天晒网” 从1990-01-01开始,那么在xxxx-xx-xx该渔夫是在打渔?晒网?
//举例:2020-09-08? 计算总天数,总天数%5==1,2,3:打渔 总天数%5==0,4:晒网


//计算总天数
//方式1:总天数=(date2.getTime()-date1.getTime())/(1000*60*60*24) + 1
//方式2:1990-01-01 --> 2019-12-31 + 2020-01-01 -->2020-09-08

4.Calendar(日历)

image.png 用以下代码验证一下: import org.junit.Test;

import java.util.Calendar; import java.util.Date;

//Calendar日历类(抽象类)的使用 public class Calendar1 { @Test public void testCalendar(){ //1.实例化 //方式1:创建其子类(GregorianCalendar)的对象 //方式2:调用静态方法 Calendar calendar = Calendar.getInstance(); //2.常用方法 //get() int days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days); System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//注意:以周日为每周的第一天

    //set()
    calendar.set(Calendar.DAY_OF_MONTH,22);
    days=calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(days);
    //add()
    calendar.add(Calendar.DAY_OF_MONTH,-3);//负数可表示减几天
    days=calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(days);
    //getTime():日历类-->Date
    Date date = calendar.getTime();
    System.out.println(date);

    //setTime():Date-->日历类
    Date date1 = new Date();
    calendar.setTime(date1);
    days = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(days);
    }}

重点来了!!!

JDK8中新增日期时间API

image.png

image.png

image.png

image.png

image.png