日期类Date
java.util.Date(类):它可以表示一个“时间”,精度为毫秒(1秒 = 1000毫秒)。
构造方法:
- Date():使用当前的系统时间构造一个Date对象。
- Date(long m):使用从1970年1月1日0时开始的一个“毫秒值”构造一个Date对象。
成员方法:
- public long getTime():返回自1970年1月1日以来,由 Date对象表示的00:00:00 GMT的毫秒数。
- public void setTime(long time):设置当前Date对象的毫秒值。
代码演示
public class Demo05 {
public static void main(String[] args) {
//1.构造一个Date对象
Date d1 = new Date();
System.out.println(d1);//Thu Jul 09 11:11:12 CST 2020
System.out.println(d1.getTime());//1594264648602
//更改d1的时间,setTime(毫秒值)
d1.setTime(1000 * 3600);
System.out.println("更改了d1的时间:");
System.out.println(d1);
System.out.println(d1.getTime());
//2.构造第二个Date对象:使用1970年1月1日0时开始的一个毫秒值构造。
Date d2 = new Date(1000 * 3600);
System.out.println(d2);//Thu Jan 01 09:00:00 CST 1970(因为我们是东八区,所以从8点开始 + 1小时, 09时)
System.out.println(d2.getTime());//3600000
Date d3 = new Date(-1000 * 3600 * 24);
System.out.println(d3);//Wed Dec 31 08:00:00 CST 1969
System.out.println(d3.getTime());//-86400000
}
}
日期格式化类DateFormat
-
java.text.DateFormat(抽象类):它可以对Date对象,进行格式设置,将转换为指定格式的字符串。
-
DateFormat是抽象类,不能创建对象。我们可以使用它的子类:SimpleDateFormat
-
SimpleDateFormat的构造方法:
-
SimpleDateFormat(String pattern):使用一个String表示的“模式”来构造一个SimpleDateFormat对象。
模式:在API中查询: y:年 M:月 d:日期 H:小时 m:分钟 s:秒 注意:大小写
SimpleDateFormat的成员方法
- public String format(Date date):将Date对象转换为我们指定模式的字符串。
- public Date parse(String dateStr):将String表示的日期,转换为Date对象。
代码演示:(转换字符串的日期格式)
public class Demo07 {
public static void main(String[] args) throws ParseException {
/*
程序中已有一个字符串:
String str = "2020年07月09日”;
程序要将这个字符串转换为:”2020-07-09”的格式。
*/
String str = "2020年07月09日";
//将这个字符串转换为Date
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
Date date = sdf1.parse(str);
//将Date转换为另一种格式的String
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
str = sdf2.format(date);
System.out.println(str);
}
}
代码演示:(计算来到世界多少天)
public class Demo08 {
public static void main(String[] args) throws ParseException {
//让用户在控制输入一个"生日",例如:"2000-03-27"
//我们程序要能够计算出用户从出生到现在共经历了"多少天"
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的生日(yyyy-MM-dd):");
String birthday = sc.next();//"2000-03-27"
//做一系列的操作
//1.将生日字符串转换为Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthDate = sdf.parse(birthday);
//2.将生日Date提取毫秒值
long t1 = birthDate.getTime();
//3.获取当前系统时间的毫秒值
long t2 = new Date().getTime();
System.out.println("你出生到现在一共:" + ((t2 - t1) / 1000 / 3600 / 24) + " 天" );
}
}
日历类_Calendar
- java.util.Calendar(抽象类):它表示“日历”可以进行日期运算。
- 它是抽象类,不能创建对象。它也有子类:GregorianCalendar,可以直接用这个子类。
另外,也可以调用Calendar的静态方法:getInstance():获取一个子类(GregorianCalendar)对象。
成员方法
- public int get(int field):获取某个字段的值。
- public void set(int field,int value):获取某个字段为value值。
- public void add(int field,int value):为某个字段增加/减少value值。
代码演示:
public class Demo09 {
public static void main(String[] args) {
//Calendar类是一个抽象类,不能创建对象
//我们可以调用Calendar的静态方法:getInstance()获取它的子类对象:
Calendar c1 = Calendar.getInstance();
System.out.println(c1);
//1.成员方法:public int get(int field):获取某个字段的值
int year = c1.get(Calendar.YEAR); //年
int month = c1.get(Calendar.MONTH) + 1;//月
int date = c1.get(Calendar.DAY_OF_MONTH);//日
// int hour = c1.get(Calendar.HOUR);//(上下午)小时
int hour = c1.get(Calendar.HOUR_OF_DAY);//(全天)小时
int minute = c1.get(Calendar.MINUTE);//分
int second = c1.get(Calendar.SECOND);//秒
int week = c1.get(Calendar.DAY_OF_WEEK);//星期返回的是:1-7的值,分别代表:"星期日","星期一","星期二",....,"星期六"
System.out.println(year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second);
System.out.println(getWeek(week));
//2.成员方法:public void set(int field,int value):设置某个字段的值
//例如:要看一下:1998-09-14那天是星期几
//1.获取一个Calendar子类对象
Calendar c2 = Calendar.getInstance();//当前系统时间
//2.设置为1998-09-14
c2.set(Calendar.YEAR, 1998);
c2.set(Calendar.MONTH, 9 - 1);
c2.set(Calendar.DAY_OF_MONTH, 14);
//设置完毕,c2内部的时间就变成了:1998-09-14
//获取星期
week = c2.get(Calendar.DAY_OF_WEEK);
System.out.println("1998-09-14那天是:" + getWeek(week));
//3.成员方法:public void add(int field,int value):为指定的字段增加/减少指定的值
//例如:算一下20个月后,是哪年,哪月,哪一天,星期几
//1.获取一个Calendar的子类对象
Calendar c3 = Calendar.getInstance();//当前系统时间
//2.为月份增加20
c3.add(Calendar.MONTH, 20);
//3.获取各个字段
year = c3.get(Calendar.YEAR);
month = c3.get(Calendar.MONTH) + 1;
date = c3.get(Calendar.DAY_OF_MONTH);
week = c3.get(Calendar.DAY_OF_WEEK);
System.out.println("20个月后是:" + year + " 年 " + month + " 月 " + date + " 日 " + getWeek(week));
}
//查表法
public static String getWeek(int w) {//1-7
//定义表
String[] arr = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
//查表
return arr[w - 1];
}
}