Date类
该类对象用于表示一个特定的瞬间,根据构造方法同,表示不同的瞬间。
构造方法
(在API中搜索时我们会发现有两个Date类,其中有一个是关于数据库sql的,这里学习的是util包里的。)
代码实例:
import java.util.Date;
public class Demo1 {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
Date d1 = new Date(313132);
System.out.println(d1);
}
}
结果输出:
Mon Nov 11 21:53:13 CST 2019
Thu Jan 01 08:05:13 CST 1970
我们可以看出来,第一种就是返回当前时间。第二种构造方法里面是距离1970年的毫秒值。
成员方法
import java.util.Date;
public class Demo1 {
public static void main(String[] args) {
// 构造方法
System.out.println("构造方法");
Date d1 = new Date();
System.out.println(d1);
Date d2 = new Date(3423432223334L);
System.out.println(d2);
Date d3 = d1;
Date d4 = new Date();
// after方法和before方法,检测调用者时间是否在参数时间之前或者之后
System.out.println("\nafter方法和before方法,检测调用者时间是否在参数时间之前或者之后:");
System.out.println(d1.after(d2));
System.out.println(d1.before(d2));
// compareTo方法,对比两个时间,如果调用者早则返回-1,调用者晚则返回1,相等返回0
System.out.println("\ncompareTo方法,对比两个时间,如果调用者早则返回-1,调用者晚则返回1,相等返回0");
System.out.println(d1.compareTo(d3));
System.out.println(d1.compareTo(d2));
// getTime方法,获取从1970年1月1日0点到调用者时间的毫秒数
System.out.println("\ngetTime方法,获取从1970年1月1日0点到调用者时间的毫秒数");
System.out.println(d1.getTime());
System.out.println(d4.getTime());
// setTime方法,设置对象为从1970年1月1日的毫秒数。
System.out.println("\nsetTime方法,设置对象为从1970年1月1日的毫秒数。");
d1.setTime(2343242343434L);
System.out.println(d1);
}
}
输出结果:
构造方法
Wed Nov 13 19:02:48 CST 2019
Sun Jun 26 09:23:43 CST 2078
after方法和before方法,检测调用者时间是否在参数时间之前或者之后:
false
true
compareTo方法,对比两个时间,如果调用者早则返回-1,调用者晚则返回1,相等返回0
0
-1
getTime方法,获取从1970年1月1日0点到调用者时间的毫秒数
1573642968748
1573642968771
setTime方法,设置对象为从1970年1月1日的毫秒数。
Sun Apr 03 04:39:03 CST 2044
DateFormat
(1)作用
- 对时间日期进行格式化处理。
- 把Date对象转化为年月日时分秒格式字符串。
- 把字符串转化为Date对象。
DateFormat 在java.text包下,抽象类,不能创建对象,需要创建子类对象,有一个已知的子类,SimpleDateFormat
重要构造方法:
重要方法:
格式表:
(红色为常用)
代码示例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class simle {
public static void main(String[] args) throws ParseException {
//Date类对象的默认输出格式
System.out.println(new Date());
//第一种构造方法
SimpleDateFormat sdf = new SimpleDateFormat();
//format方法,将一个Date类对象解析为字符串
String str = sdf.format(new Date());
//可以发现,解析出来的字符串表示的日期相比Date类表示的日期更加直观。
System.out.println(str);
//第二种有参构造方法,设置日期格式。
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//然后再解析一次日期字符串
String str1 = sdf1.format(new Date());
//这次的效果就是我们想要的效果了
System.out.println(str1);
//再次设置日期格式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH--mm--ss");
//parse方法,为Date类创建的对象用设置好的格式赋值
Date d1 = sdf2.parse("2016-07-23 23--04--09");
System.out.println(d1.getTime());
//toPattern方法,输出当前对象的日期格式
System.out.println(sdf2.toPattern());
}
}
输出结果:
Wed Nov 13 20:33:05 CST 2019
19-11-13 下午8:33
2019-11-13 20:33:05
1469286249000
yyyy-MM-dd HH--mm--ss
练习:输入你的生日,计算出你从出生到现在一共多少天。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class 生日计算 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的生日:");
String s = sc.next();
Date d1 = sdf.parse(s);
Long l1 = d1.getTime();
Long l2 = new Date().getTime();
System.out.println("你活了"+(l2-l1)/1000/60/60/24+"天");
sc.close();
}
}
请输入你的生日:
2016年7月23日
你活了1208天
Calendar类
(1)作用
由于Date类在设计上的一些缺陷,所以Java提供了Calendar类来更好的处理时间和日期。
Calendar是一个抽象类,表示日历,不能直接实例化,通常使用getInstance() 方法来获取实例。
(2)用法
创建方式
Calendar calendar=Calendar.getInstance() |
Calendar类的常用方法:
getTime() 返回Date类型时间 setTime(Date date) 设置时间到日历中 get(Calendar.YEAR/MONTH/DATE) 获取年份、月份、日 set(2015,11,11,12,11,10) 设置时间到日历中,月份从0到11 add(Calendar.YEAR/MONTH/DATE,2) 在一个日期的年,月,日上添加对应的值 |
代码示例:
import java.util.Calendar;
import java.util.Date;
public class Demo01 {
public static void main(String[] args) {
//抽象类
Calendar cal = Calendar.getInstance(); // 系统当前时间
System.err.println("getTime()方法");
Date date = cal.getTime();
System.out.println(date);
System.err.println("get()方法");
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH); // 月份从0开始
int datee = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int day = cal.get(Calendar.DAY_OF_WEEK); //获得的是这个星期的第几天 星期日是第一天
System.out.println(year+"-"+(month+1)+"-"+datee+" "+hour+":"+minute+":"+second+" 星期"+(day-1));
System.err.println("set方法");
cal.set(2017,10,20,11,11,11);
System.out.println(cal.getTime());
System.err.println("add方法");
cal.add(Calendar.DATE,25);
System.out.println(cal.getTime());
cal.add(Calendar.MONTH, 13);
System.out.println(cal.getTime());
}
}
输出结果:
getTime()方法
Wed Nov 13 21:07:04 CST 2019
2019-11-13 9:7:4 星期3
get()方法
set方法
Mon Nov 20 11:11:11 CST 2017
add方法
Fri Dec 15 11:11:11 CST 2017
Tue Jan 15 11:11:11 CST 2019