1.毫秒值的概念和作用
2.Date类的构造方法和成员方法
Demo02Date.java
package Date;
import java.util.Date;
public class Demo02Date {
public static void main(String[] args) {
//1.构造方法Date,分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date date1 = new Date();
System.out.println(date1);//Fri Nov 12 20:13:28 CST 2021
//2.Date(long date)分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,
// 即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
Date date2 = new Date(17779999L);
Date date3 = new Date(0L);
System.out.println(date2);//Thu Jan 01 12:56:19 CST 1970
System.out.println(date3);//Thu Jan 01 08:00:00 CST 1970
//3.getTime()
// 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
Date date4 = new Date();
System.out.println(date4.getTime());//1636719470013
}
}
3.DateFormat类和SimpleFormat类
Demo01DateFormat.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo01DateFormat {
public static void main(String[] args) throws ParseException {
//1.使用DateFormat类中的format方法,把日期格式化为文本
//String format(Date date) 按照指定格式,把Date日期,格式化为符合模式的字符串
/*
* 使用步骤:
* 1.创建SimpleDateFormat对象,构造方法中传递指定的模式
* 2.调用SimpleDateFormat对象中的方法format(parse),按照构造方法中指定的模式,把Date日期格式化为复合模式的字符串(文本)
* 把符合构造方法中模式的字符串,解析为Date日期
* */
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String format = simpleDateFormat.format(date);
System.out.println(date);//Sat Nov 13 10:43:05 CST 2021
System.out.println(format);//2021-11-13 10:43:05
/*2.使用DateFormat类中的方法parse,把文本解析为日期
* Date parse(String source) 把符合模式的字符串,解析为Date日期
* 注意:
* public Date parse(String source) throws ParseException
* parse方法声明了一个异常叫ParseException解析异常
* 如果字符串和构造方法中的模式不一样,那么程序就会抛出此异常
* 调用一个抛出了异常的方法,就必须处理这个异常,要么throws继续声明抛出这个异常,呀么try...catch自己处理这个异常
* */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parse = sdf.parse(format);
System.out.println(parse);
}
}
4.练习
DatePract.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//使用日期相关的API,计算出一个人已经出生了多少天
/*
* 思路:
* 1.使用Scanner类中的方法next,获取出生日期
* 2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
* 3.把Date格式的出生日期转换为毫秒值
* 4.获取当前的日期,转换为毫秒值
* 5.使用当前日期的毫秒值-出生日期的毫秒值
* 6.把毫秒值的差值转换为天(s/1000/60/60/24)(注意刚开始自己还除以365,不对的!!!!)
* */
public class DatePract {
public static void main(String[] args) throws ParseException {
Date dateNow = new Date();
System.out.println("现在时间是:" + dateNow);
Long dataNew = dateNow.getTime();
System.out.println("请输入你的出生日期:");
//String dateBorn = new Scanner(System.in).next("yyyy-MM-dd HH:mm:ss");
String dateBorn = new Scanner(System.in).next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Long dateOld = sdf.parse(dateBorn).getTime();
int days = (int) ((dataNew - dateOld) / ( 24 * 60 * 60 * 1000));
System.out.println(days);//8799
}
}
5.Calendar类
Date的很多类已经不用了,常用Calendar类来代替
6.Calendar类常用的成员变量方法
Demo02Calendar.java
package Calender;
import java.util.Calendar;
/*
* Calendar类的成员方法:
* -public int get(int field):返回给定日历字段的值
* -public void set(int field,int value):将给定的日历字段设置为给定值
* -public abstract void add(int field, int amount):根据日历规则,为给定的日历字段添加或减去指定的时间量
* -public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象
* 成员方法的参数:
* int field :日历类的字段,可以用Calendar类的静态变量获取
* */
public class Demo02Calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH) + 1;//西方月份0-11,中国1-12
System.out.println(month);
int day = c.get(Calendar.DATE);//DAY_OF_MONTH一样效果
System.out.println(day);
/*2.
* public void set(int field, int value):将给定的日历字段设置为给定值
* 参数:
* int field:传递指定的日历字段(YEAR,MONTH)
* int value:传递的字段设置的具体的值
* */
c.set(Calendar.YEAR,2010);
System.out.println(c.get(Calendar.YEAR));//2010
//同时设置年月日,可以使用set的重载方法
//c.set(8888,8,8);
//3.-public abstract void add(int field, int amount):根据日历规则,为给定的日历字段添加或减去指定的时间量
c.add(Calendar.YEAR,+2);
System.out.println(c.get(Calendar.YEAR));//2012
c.add(Calendar.YEAR,-2);
System.out.println(c.get(Calendar.YEAR));//2010
//4.public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象
//日历对象转化为日期对象
System.out.println(c.getTime());//Sat Nov 13 19:14:04 CST 2010
}
}
//2021
//11
//13