Date
概述
java.util.Date类表示特定的瞬间,精确到毫秒。
继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。
public Date() :分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date) :分配Date对象并初始化此对象,以表示自从标准基准时间(称为”历元( epoch )” ,即1970年1月1日00:00:00 GMT )以来的指定毫秒数。
作用
java.util. Date:表示日期和时间的类类Date表示特定的瞬间,精确到毫秒。
毫秒:千分之一秒1000毫秒=1秒
特定的瞬间:一个时间点,一刹那时间
2088-08-08 09:55:33:333瞬间
2088-08-08 09:55:33:334瞬间
2088-08-08 09:55:33:334瞬间
毫秒值的作用:可以对时间和日期进行计算
2099-81-83到2088-01-01中间一共有多少天
可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为日期
把日期转换为毫秒:
时间原点(0) :1970年1月1日00:00:00
就是计算当前日期到时间原点之间一共经历了多少毫秒
注意:
中国属于东八区,会把时间增加8个小时1970年1月1日08:00:00
把毫秒转换为日期:
1天=24x 60x 60= 86400秒=86400 x 1000= 86400000毫秒
public static void main(string[] args) {
System.out .println(System.currentTimeMillis ());
//获取当前系统时间到1970年1月1日00:00:00经历了多少毫秒
}
Date类的空参数构造方法:
Date()获取的就是当前系统的日期和时间
public class Demoe2Date {
public static void main(string[] args) { demool();
private static void demo1() {
Date date = new Date();
System.out.println(date);
}
Date类的带参数构造方法:
Date(Long date) :传递毫秒值,把毫秒转换为Date日期
private static void demoe2() {
Date d1 = new Date(OL);
System.out.println(d1);//Thu Jan 01 08:00:00 CST 1970
Date d2 = new Date(158111111111L);
System.out.println(d2);///sun Jan 05 07:45:11 CST 1975
Date类的成员方法
Long getTime()把日期转换为毫秒(相当于System.currentTimeMillis())返回自1970年1月1日00:00:00 GMT以来此Date对象表示的毫秒数。
private static void demoe3() {
Date date = new Date();
long time = date.getTime();
System.out.println(time);
}
DateFormat类
概述
java.text. DateFormat:是日期/时间格式化子类的抽象类
格式化:按照指定的格式,从Date对象转换为String对象。
解析:按照指定的格式,从String对象转换为Date对象。
作用:
格式化(也就是日期->文本)、解析(文本->日期)
成员方法
String format (Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source)把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类
java.text. SimpleDateFormat extends DateFormat
构造方法
SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat参数:
string pattern: 传递指定的模式
模式:区分大小写的
y 年
m 月
d 天
h 时
m 分
s 秒
写对应的模式,会把模式替换为对应的日期和时间
“yyyy-MM-dd HH:mm:ss”
“yyyy年MM月dd日HH时mm分ss秒
注意:
“yyyy年MM月dd日HH时mm分ss秒“
模式中的字母不能更改,连接模式的符号可以改变
使用DateFormat类中的方法format,把日期格式化为文本
String format (Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串
使用步骤:
1创建simpleDateFormat对象,构造方法中传递指定的模式
2·调用simpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
private static void demoe1() {
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat( pattern: "yyyy-MM-dd HH:mm:ss");
//2,调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
Date date = new Date();
string text = sdf.format (date);
System.out.println(date);
System.out.println(text);
}
private static void demoe2() throws ParseException {
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat( pattern: "yyyy年MMAdd日HH时mm分ss秒");
//2,调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期Date date =sdf.parse( source: "2088年08月08日17时01分10");
System.out.println(date);
练习:
分析:
请使用日期寸间相关的API,计算出一个人已经出生了多少天。
1,使用scanner类中的方法next,获取出生日期
2,使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
3.把Date格式的出生日期转换为毫秒值
4,获取当前的日期,转换为毫秒值
5,使用当前日期的毫秒值-出生日期的毫秒值
6,把毫秒值的差值转换为天(s/1000/60/60/24)
代码
public static void main(String[] args) throws ParseException {
//1,使用Scanner类中的方法next,获取出生日期
Scanner sc = new Scanner(System.in);
System.out.println("请输入您得到出生日期,格式为yyyy-MM-dd HH:mm:ss");
string birthdayDatestring = sc.next();
//2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayDate = sdf.parse(birthdayDatestring);
//3.把Date格式的出生日期转换为毫秒值
long birthdayDateTime = birthdayDate.getTime();
//4,获取当前的日期,转换为毫秒值
long todayTime = snowDate().getTime();
//5·使用当前日期的毫秒值-出生白期的童秒值
long time = todayTime - birthdayDateTime;
//6,把毫秒值的差值转换为天(s/1000/60/60/24)
System.out.println(time / 1000 / 60 / 60 / 24);
}
calendar类
创建对象方式
Calendar c= Calendar.newlnstance);
获取日历类对象
成员方法
int getint n); 获取指定日历字段信息
void set(int n,int value);
将指定日历字段设置为指定值
void add(int n,int value); 将指定日历字段增加或减少指定的值
public static void main(String[] args) {//获取日历类对象
Calendar c = calendar.getInstance();
//get方法
int year = c.get(calendar.YEAR);
System.out.println(year);
int month = c.get(calendar.MONTH) + 1;
System.out.println(month);
System.out.println("-----------");
//set方法
c.set(Calendar.YEAR, 2088);
year = c.get(calendar.YEAR);
System.out.println(year);
System.out.println(" -----------");
//ladd方法
c.add(calendar.YEAR, 2);
year = c.get(calendar.YEAR);
System.out.println(year);
}