1. Date类
概述:java.util.Date
类表示特定的瞬间,精确到毫秒。
Date的无参构造函数
public Date(): 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)
public Date(long date): 分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
注意:由于我们处在东八区,所以我们的基准时间为1970年1月1日8时0分0秒。
常用方法:public long getTime() 把日期对象转换成对应的时间毫秒值
代码实现如下
package Demo02;
import java.util.Date;
public class Demo01Date {
public static void main(String[] args) {
demo01();
demo02();
demo03();
}
/*
long getTime() 把日期转换为毫秒值(相当于System.currentTimeMillis()方法)
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
*/
private static void demo03(){
Date date = new Date();
long time = date.getTime();
System.out.println(time);
System.out.println("===========");
}
/*
Date类的带参数构造方法
Date(long date) :传递毫秒值,把毫秒值转换为Date日期
*/
private static void demo02(){
Date date = new Date(0L);
System.out.println(date);
System.out.println("==========");
date = new Date(1592741954665L);
System.out.println(date);
System.out.println("=============");
}
/*
Date类的空参数构造方法
Date() 获取当前系统的日期和时间
*/
private static void demo01(){
Date date = new Date();
System.out.println(date);
System.out.println("==============");
}
}
运行结果如下:
1.1DateFormat类
java.text.DateFormat
是日期/时间格式化子类的抽象类,可以通过这个类完成日期和文本之间的转换,也就是在Date对象与String对象之间进行来回转换。
格式化:按照指定的格式,从Date对象转换为String对象。
解析:按照指定的格式,从String对象转换为Date对象 。
构造方法:
由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat
。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:
public SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
参数pettern是一个字符串,代表日期时间的自定义格式。
格式规则
常用方法
public String format(Date date)
将Date对象格式化为字符串。
public Date parse(String source)
将字符串解析为Date对象。
代码实现如下:
public class Demo02Test {
public static void main(String[] args) throws ParseException {
demo01();
demo02();
}
public static void demo02() throws ParseException {
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
System.out.println("请输入数据,格式:yyyy-MM-dd HH-mm-ss");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
//2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
System.out.println("=======demo02==========");
Date date1 = sdf.parse(str);
System.out.println(date1);
/* Date date = sdf.parse("2088-08-08 15-51-54");
System.out.println(date);*/
}
private static void demo01(){
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
Date date = new Date();
String d = sdf.format(date);
System.out.println("=======demo01===========");
System.out.println(date);
System.out.println(d);
}
}
运行结果如下:
2. Calendar类
java.util.calendar
是日历类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。
获取方式
Calendar为抽象类,由于语言敏感性,Canlendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:
Calendar静态方法
public static Calendar getInstance()
使用默认时区和语言环境获得一个日历。
常用方法
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对象。
Calendar类中提供很多成员常量,代表给定的日历字段:
注意:
西方星期的开始为周日,中国为周一。
在Calendar类中,月份的表示是以0-11代表1-12月。
日期是有大小关系的,时间靠后,时间越大。
运行代码如下:
package Demo04;
import java.util.Calendar;
import java.util.Date;
public class Demo02Calendar {
public static void main(String[] args) {
demo01();
demo02();
demo03();
demo04();
}
public static void demo04(){
Calendar c = Calendar.getInstance();
System.out.println("====demo04=====");
Date date =c.getTime();
System.out.println(date);
}
public static void demo03(){
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR,2);
c.add(Calendar.MONTH,-3);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
System.out.println("=====demo03=====");
System.out.println(year);
System.out.println(month);
System.out.println(date);
}
public static void demo02(){
Calendar c= Calendar.getInstance();
c.set(Calendar.YEAR,9999);
c.set(Calendar.MONTH,9);
c.set(Calendar.DATE,9);
System.out.println("=====demo02=====");
System.out.println(Calendar.YEAR);
System.out.println(Calendar.MONTH);
System.out.println(Calendar.DATE);
System.out.println("==========");
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
System.out.println(year);
System.out.println(month);
System.out.println(date);
}
public static void demo01(){
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
System.out.println("=======demo01=========");
System.out.println(year);
System.out.println(month);
System.out.println(date);
}
}
运行结果如图: