一、Date类
1.什么是Date类???
java.util.Date
在util包下 ,Date类表示日期
Java底层使用long类型表示日期
long类型的值表示的是
是基于1970年1月1日0时0分0秒至今的差值
1970年1月1日0时0分0秒也叫计算机纪元时间
2.Date类有哪五种常用方法???
注意:Date类中有多个构造方法都是过时的
不建议使用
已过时,不建议使用的方法:
getYear()
getMonth()
getDate()
getHours()等
创建date对象,无参构造默认创建此时此刻时间
Date date = new Date();
方法一:getTime() 获取
从1970年1月1日 0时0分0秒到此刻毫秒值
System.out.println(date.getTime());
方法二:setTime() 设置毫秒值
date.setTime(6666);
System.out.println(date);
方法三:after()
判断某个日期是否在指定日期之后
Date d1 = new Date(222);
Date d2 = new Date(111);
System.out.println(d1.after(d2));
方法四:before()
判断某个日期是否在指定日期之前
System.out.println(d1.before(d2));
方法五:a.compareTo(b)
对两个日期进行比较
如果a时间在b之后,则返回1
如果a时间在b之前,则返回-1
如果a==b,则返回0
Date d3 = new Date(111);
System.out.println(d1.compareTo(d2));
public class Test{
public static void main(String[] args) throws ParseException {
testDate();
}
public static void testDate() {
Date today = new Date();
System.out.println("表示当前时间结果是 : "+today);
System.out.println("毫秒数结果是 : "+today.getTime());
Date date2 = new Date(0);
System.out.println("new Date(0)结果是 : "+date2);
Date date = new Date();
// getYear()、getMonth()、getDate()、getHours()等,都已过时
// getTime() 获取毫秒值
System.out.println("getTime()结果是 :"+date.getTime());
// setTime() 设置毫秒值:1970年纪元时间+参数值
date.setTime(6666);
System.out.println("date.setTime(6666)结果是 :"+date);
// after() 判断某个日期是否在指定日期(1970年纪元时间+参数值)之后
Date d1 = new Date(222);
System.out.println("d1为纪元时间+100");
Date d2 = new Date(111);
System.out.println("d2为纪元时间+900");
System.out.println("d1.after(d2)结果是 :"+d1.after(d2));
// before() 判断某个日期是否在指定日期(1970年纪元时间+参数值)之前
System.out.println("d1.before(d2)结果是 :"+d1.before(d2));
/*
* a.compareTo(b) 对两个日期进行比较
* 如果a>b,则返回1,如果a<b,则返回-1,如果a==b,则返回0
*/
Date d3 = new Date(111);
System.out.println("d3为纪元时间+500");
System.out.println("d1.compareTo(d2)结果是 :"+d1.compareTo(d2));
System.out.println("d2.compareTo(d1)结果是 :"+d2.compareTo(d1));
System.out.println("d2.compareTo(d3)结果是 :"+d2.compareTo(d3));
}
}
二、SimpleDateFormat
1.SimpleDateFormat是对日期Date类对格式化和解析
2.两个操作
(1)格式化:日期—>字符串
(2)解析:格式化对逆过程,字符串—>日期
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public static void main(String[] args) throws ParseException {
//实例化SimpleDateFormat
SimpleDateFormat simpleDateFormat=new SimpleDateFormat();
//格式化:日期--->字符串
Date date1=new Date();
System.out.println(date1);
String format=simpleDateFormat.format(date1);
System.out.println(format);
//解析:格式化对逆过程,字符串--->日期
SimpleDateFormat simpleDateFormat1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//格式化
String format1=simpleDateFormat1.format(date1);
System.out.println(format1);
//解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数来体现),否则会抛异常
Date date2=simpleDateFormat1.parse("2020-05-29 11:48:27");
System.out.println(date2);
}
3.举例:将字符串"2020-05-29"转换为"java.sql.Date"
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
String birth="2020-05-29";
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);
三、calendar类
1.Calendar类叫:日历类,是方便我们操作日期的,它里面的功能大多数是用来替代java.util.Date类的功能的
2.
-
Calendar类可以理解为是工具类,因为它是一个抽象类,所有外界无法通过new的方式创建类对象
-
问:如何创建Calendar类的对象呢
- 答:通过Calendar#getInstance()方法实现
实例
public class Test {
public static void main(String[] args) {
Calendar C = Calendar.getInstance();
System.out.println(C.getTime());
}
}
3.成员变量
public static final int YEAR:表示年份
public static final int MONT:表示月份
public static final int DATE:表示年终的某一天
public static final int DAYOFMONTH:表示月中的某一天
public static final int DAYOFWEEK:表示星期中的某一天
4.成员方法
public static Calendar getInstance():创建Calendar类型的子类对象
public int get(int field):根据日历字段,获取其对应的值
public void set(int year, int month, int day):设置时间为指定的年,月,日
public void add(int field, int count):修改指定的时间为指定的偏移量
例如:往前推2天,推3个月,往后推2年