目录
JDK8之前的日期时间API
java.lang.System类
java.util.Date类
两个构造器的使用
两个方法的使用
java.sql.Date类
涉及两个问题:
java.text.SimpleDateFormat类
格式化:日期--->字符串
解析:字符串--->日期(格式化的逆过程)
java.util.Calendar(日历)类
获取Calendar实例的方法
Calandar类的常用方法
System类提供public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。(时间戳)
计算世界时间的主要标准有:
表示特定的瞬间,精确到毫秒
- 构造器一:util下的Date():创建一个对应当前时间的Date对象
- 构造器二:util下的Date(long date):创建一个指定时间的Date对象
- 方法一:toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准)
- 方法二:getTime():获取当前Date对象所对应的毫秒数(时间戳:自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象 表示的毫秒数)
import org.junit.Test;import java.util.Date;
public class DateTimeTest {@Testpublic void test1(){//构造器一:util下的Date():创建一个对应当前时间的Date对象Date date1 = new Date();System.out.println(date1.toString());System.out.println(date1.getTime());//构造器二:util下的Date():创建指定时间的Date对象Date date2 = new Date(1669275759155L);System.out.println(date2.toString());}
}
运行结果:
java.sql.Date类对应着数据库中的日期变量类型
- 1、如何实例化sql.Date对象
- 2、util.Date和sql.Date对象如何相互转换
package com.light.java;import org.junit.Test;import java.util.Date;/*** @auther light* @Description JDK8之前的日期时间API* @create 2022-11-24 15:35*/
public class DateTimeTest {/*** |---java.sql.Date类* java.sql.Date:对应这数据库中的日期类型变量* >如何实例化* >sql.Date--->util.Date(直接赋值:多态)** >如何将java.util.Date对象转换为java.sql.Date对象:**/@Testpublic void test1(){System.out.println("\n**********************sqlDate**************************");//创建SQL类中的Date对象java.sql.Date date3 = new java.sql.Date(1669276192545L);System.out.println(date3.toString());//只输出年月日System.out.println("\n**********************sql.Date--->util.Date(直接赋值:多态)**************************");Date date4 = new Date();date4=date3;System.out.println(date4.toString());System.out.println("\n**********************将java.util.Date对象转换为java.sql.Date对象**************************");//从父类-->子类Date date5=new Date();java.sql.Date date6=new java.sql.Date(date5.getTime());//利用getTime()方法获取util.Date和sql.Date中共有的部分System.out.println(date6.toString());}
}
运行结果
Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
- SimpleDateFormat():默认模式的语言环境创建对象(默认构造器)
- SimpleDateFormat(String pattern):该构造器可以用参数pattern指定的的格式创建一个对象,该对象调用:
- public String format(Date date):方法格式化时间对象
- public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期
import org.junit.Test;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** @auther light* @Description JDK 8之前的日期时间的API测试* SimpleDateFormat*
* @create 2022-11-25 19:32*/
public class DateTimeTest {/*** SimpleDateFormat的使用:SimpleDateFormat是对日期Date类的格式化和解析** 1、两个操作:格式化和解析* 格式化:日期----->字符串* 解析:格式化的逆过程:字符串---->日期** 2、SimpleDateFormat的实例化**/@Testpublic void test1() throws ParseException {//实例化SimpleDateFormat:使用默认构造器SimpleDateFormat sdf = new SimpleDateFormat();//格式化日期 java.util.DateDate date = new Date();System.out.println(date);String format = sdf.format(date);System.out.println(format);//解析:格式化的逆过程:字符串--->日期String str="22-11-25 下午7:42";Date parse = sdf.parse(str);System.out.println(parse);System.out.println("************按指定的方式格式化和解析:带参数的构造器*******************");SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//格式化String format1 = sdf1.format(date);System.out.println(format1);//2022-11-25 08:40:43//解析:要求字符串必须是SimpleDateFormat识别的格式(通过构造器参数体现)Date parse1 = sdf1.parse("2022-11-25 08:36:46");System.out.println(parse1);}}
运行结果:
Calendar是一个抽象基类(不能被实例化),主用用于完成日期字段之间相互操作的功能。
- 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、 MINUTE、SECOND
- public void set(int field,int value)//该方法没有返回值,直接在原有字符串上进行修改
- public void add(int field,int amount)//该方法没有返回值,直接在原有字符串上进行修改
- public final Date getTime()
- public final void setTime(Date date)
注意:
import org.junit.Test;import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;public class DateTimeTest {
/*** 日历类(抽象类)的使用*/@Testpublic void testCalender(){//一、实例化//方式一:创建子类GregorianCalendar的构造器GregorianCalendar g=new GregorianCalendar();//setg.set(2022,11,28);System.out.println(g.getTime());//方式二:调用其静态方法getInstance()Calendar calender = Calendar.getInstance();//二、常用方法//get()int i = calender.get(Calendar.DAY_OF_MONTH);System.out.println(i);//set()calender.set(Calendar.DAY_OF_MONTH,27);int i1 = calender.get(Calendar.DAY_OF_MONTH);System.out.println(i1);//add()calender.add(Calendar.DAY_OF_MONTH,-1);int i2 = calender.get(Calendar.DAY_OF_MONTH);System.out.println(i2);//getTime():将Calender类转换为Date类Date date = calender.getTime();System.out.println(date);//setTime():将Date类转换为Calender类Date date1 = new Date();calender.setTime(date1);int i3 = calender.get(Calendar.DAY_OF_MONTH);System.out.println(i3);}
}
运行结果