1.Date类
(1)概述:类 Date 表示特定的瞬间,精确到毫秒。
(2)构造方法:
方法 | 作用 |
---|---|
public Date() | 根据当前的默认毫秒值创建日期对象 |
public Date(long date) | 把一个long类型的毫秒值转换成一个日期对象 |
(3)成员方法:
方法 | 作用 |
---|---|
public long getTime() | 获取一个日期对象对象毫秒值 |
public void setTime(long time) | 给一个日期对象设置上指定的毫秒值 |
(4)Date和long互相转换
Date 转换为 long :调用getTime方法
long转换为Date :可以使用构造方法或使用setTime(long time)
public class MyTest {
public static void main(String[] args) {
Date date = new Date();
//Fri May 21 02:23:16 CST 2021
System.out.println(date);
//月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月
int month = date.getMonth();
System.out.println(month);
//返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
long time = date.getTime(); //跟 System.currentTimeMillis();
System.out.println(time);
}
}
2.SimpleDateFormat类
(1)概述:可以把一个日期对象格式化成一个文本(字符串) , 也可以把一个日期字符串解析成一个日期对象。
(2)构造方法:
方法 | 作用 |
---|---|
public SimpleDateFormat() | 使用默认的模式来创建一个SimpleDateFormat对象 |
public SimpleDateFormat(String pattern) | 使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象 |
(3)规则的定义:
字母 | 含义 |
---|---|
y | 年 |
M | 月 |
d | 天 |
H | 时 |
m | 分 |
s | 秒 |
(4)成员方法:
方法 | 作用 |
---|---|
public String format(Date date) | 把一个日期对象格式化成一个字符串 |
public Date parse(String dateStr) | 把一个日期字符串解析成一个日期对象 注意要以指定格式解析 |
public class MyTest {
public static void main(String[] args) {
Date date = new Date();
//SimpleDateFormat 格式化日期的类
//空参构造:采用的是默认格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
String dateStr = simpleDateFormat.format(date);
System.out.println(dateStr);
System.out.println("==================================");
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年M月dd日 HH时mm分ss秒 E D z Z");
String format = simpleDateFormat2.format(date);
System.out.println(format);
}
}
3.Calendar类
(1)概述:Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象。
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
(2)成员方法:
方法 | 作用 |
---|---|
public static Calendar getInstance() | 使用默认时区和语言环境获得一个日历对象 |
public int get(int field) | 获得给定日历字段对应的值 field通过Calendar提供的字段来拿 |
public void add(int field,int amount) | 根据日历的规则,为给定的日历字段添加或减去指定的时间量 |
public final void set(int year,int month,int date) | 设置日历时间 年月日 |
public class MyTest3 {
public static void main(String[] args) {
Calendar instance = Calendar.getInstance();
//instance.set(2000, 11, 12);
//设置年月日,时分秒
instance.set(Calendar.YEAR, 2005);
int i = instance.get(Calendar.YEAR);
System.out.println(i);
int i1 = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i1);
}
}
public class MyTest4 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//给日期字段,加上或减去对应的时间量 当然 你传入负数值 就是减去
calendar.add(Calendar.YEAR, -2);
int i = calendar.get(Calendar.YEAR);
System.out.println(i);
}
}
4.案例:你来到这个世界多少天
public class MyTest {
public static void main(String[] args) throws ParseException {
//计算你来这个世界多少天
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的生日 格式为1980-01-01");
String brithdataStr= scanner.nextLine();
//将日期字符串转换成日期对象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse(brithdataStr);
//获取生日日期对象对应的毫秒值
long brithdayTime = date.getTime();
//获取系统当前对应的毫秒值
long currentTime = System.currentTimeMillis();
long time = (currentTime - brithdayTime) / (1000 * 60 * 60 * 24);
System.out.println("你来到这个世界"+time+"天");
}
}