JDK8之前日期时间API
java.lang.System类
System类提供的public static long currentTimeMillis()用来返回当前时 间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
此方法适于计算时间差。
java.util.Date类
|-----java.sql.Date类
java.util.Date类
两个构造器的使用:
Date():创建一个对应当前时间的Date对象
创建指定毫秒数的Date对象
两个方法的使用:
toString():显示当前的年、月、日、时、分、秒。
getTime():获取当前Date对象对应的毫秒数(时间戳)
计算世界时间的主要标准有:
UTC(Coordinated Universal Time)
GMT(Greenwich Mean Time)
CST(Central Standard Time)
java.sql.Date对应着数据库中的日期类型的变量
如何将java.util.Date对象转换为java.sql.Date对象
package com.xxx.java;
import org.junit.Test;
import java.util.Date;
/**
* @author Alkaid
* @create 2022-08-15 19:32
*/
public class DateTimeTest {
@Test
public void test1() {
long time = System.currentTimeMillis();
System.out.println(time);
Date date1 = new Date();
System.out.println(date1.toString());
System.out.println(date1.getTime());
Date date2 = new Date(1660564009999L);
System.out.println(date2.toString());
//创建java.sql.Date对象
java.sql.Date date3 = new java.sql.Date(35235325345L);
System.out.println(date3);
// 情况一
Date date4 = new java.sql.Date(35235325345L);
java.sql.Date date5 = (java.sql.Date) date4;
// 情况二
Date date6 = new Date();
java.sql.Date date7 = new java.sql.Date(date6.getTime());
}
}
java.text.SimpleDateFormat类
Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
它允许进行格式化:日期 ——> 文本
解析:文本 ——> 日期
package com.xxx.java;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Alkaid
* @create 2022-08-16 11:34
*/
public class DateTimeTest {
@Test
public void testSimpleDateFormat() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat();
Date date = new Date();
System.out.println(date);
String format = sdf.format(date);
System.out.println(format);
String str = "19-12-18 下午13:43";
Date date1 = sdf.parse(str);
System.out.println(date1);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format1 = sdf1.format(date);
System.out.println(format1);
Date date2 = sdf1.parse(format1);
System.out.println(date2);
}
@Test
public void testExer() throws ParseException {
String birth = "2020-09-08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birth);
java.sql.Date birthDate = new java.sql.Date(date.getTime());
System.out.println(birthDate);
}
}
java.util.Calendar(日历)类
Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
获取Calendar实例的方法
使用Calendar.getInstance()方法
调用它的子类GregorianCalendar的构造器。
一个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)
注意:
获取月份时:一月是0,二月是1,以此类推,12月是11
获取星期时:周日是1,周二是2 , 。。。。周六是7
package com.xxx.java;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author Alkaid
* @create 2022-08-16 11:34
*/
public class DateTimeTest {
@Test
public void testSimpleDateFormat() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat();
Date date = new Date();
System.out.println(date);
String format = sdf.format(date);
System.out.println(format);
String str = "19-12-18 下午13:43";
Date date1 = sdf.parse(str);
System.out.println(date1);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format1 = sdf1.format(date);
System.out.println(format1);
Date date2 = sdf1.parse(format1);
System.out.println(date2);
}
@Test
public void testExer() throws ParseException {
String birth = "2020-09-08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birth);
java.sql.Date birthDate = new java.sql.Date(date.getTime());
System.out.println(birthDate);
}
@Test
public void testCalender(){
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass());
//常用方法
//get()
int days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
//set