目录
一、Date类
1.类
Date 表示特定的瞬间,精确到毫秒
2.构造方法
1)无参构造: Date date = new Date();
创建一个日期对象,包含了程序运行那一刻的时间。
分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)
2)有参构造: Date date = new Date( long date);
分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数也就是在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
public class Dome {
public static void main(String[] args) throws ParseException {
Date date=new Date();
System.out.println(date.toString());
System.out.println(date);
System.out.println(date.getTime());
}
}
/*Sat Nov 27 08:15:56 GMT+08:00 2021
Sat Nov 27 08:15:56 GMT+08:00 2021
输出结果都一样*/
常用方法:a.getTime();//获取一个毫秒值
返回值是一个long类型。
public class Dome {
public static void main(String[] args) throws ParseException {
Date date=new Date();
System.out.println(date.getTime());
}
}
3.Date类中的方法
1)getTime(); 获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
2)setTime(); 在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
3)toString(); 该类重写了toString方法,会打印出相对应格式的日期
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
//获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
long time = date.getTime();
System.out.println(time); //1652172389909
//获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
long timeMillis = System.currentTimeMillis(); //该方法属于System类,功能是i相同的!
System.out.println(timeMillis); //1652172389909
//在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
date.setTime(1000 * 60 * 60 * 24);
System.out.println(date); //Fri Jan 02 08:00:00 CST 1970
System.out.println(date.toString()); //Fri Jan 02 08:00:00 CST 1970
}
}
4.Date类型与Long类型的相互转换
Date类型转换为Long类型(用getTime();)
Date date = new Date();
long time = date.getTime();
Long类型转换为Date类型(用setTime();)
1)Date date = new Date(long time);
2)Date date = new Date(); date.setTime(long time);
//Date~~~~long
Date date = new Date();
long time = date.getTime();
System.out.println(time); //1652172898683
//long~~~~Date
long num = 1000 * 60 * 60 * 24;
Date date1 = new Date(num);
System.out.println(date1); //Fri Jan 02 08:00:00 CST 1970
Date date2 = new Date();
date2.setTime(num);
System.out.println(date2); //Fri Jan 02 08:00:00 CST 1970
}
}
二、SimpleDateFormat类
1.定义
是一个抽象类,构造方法接受一个字符串的参数,表示它当前的日期格式。主要用于格式化日期Date类为字符串和将日期格式的字符串转换成Date类。
格式化指的是将储存日期的类转化为字符串记录的日期的形式
(格式化日期)
2.构造方法
1)无参构造: SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
没有指定格式,按照默认格式输出.
2)有参构造: SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("放入时间格式 "); 按照指定格式输出.
注:yyyy表示年 / MM表示月 / dd表示天 /hh表示1~12小时制(1-12). / HH表示24小时制(0-23). / mm表示分 / ss表示秒 / S表示毫秒 / E表示星期 / D表示一年中的第几天 / F表示一月中的第几个星期(会把这个月总共过的天数除以7). / w表示一年中的第几个星期 / W表示一月中的第几星期(会根据实际情况来算) / a表示上下午标识 / k表示和HH差不多,表示一天24小时制(1-24). / K表示和hh差不多,表示一天12小时制(0-11). / z表示表示时区
3.主要实现的功能
1)将字符串日期转换为Date类
String a="2022-11-27";
SimpleDateFormat d=new SimpleDateformat("yyyy-MM-dd");//创建该类实例对象用以调用方法
Date date=d.parse(s);
2)将Date类转换为字符串日期
SimpleDateFormat d=new SimpleDateFormat("yyyy-MM-dd");
Date e=new Date();
String s=d.format(e);
三.Calendar类
1.概念
Calendar 是一个抽象类, 无法通过直接实例化得到对象,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象.它其中包含了很多这样的特定瞬间的日历字段:YEAR、MONTH、DAY_OF_MONTH、HOUR,同时也为这些日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法.一般与Date类配合起来一块使用
2.方法
1)getInstance(); 使用默认时区和语言环境获得一个日历对象
2)get(int field); 获得给定日历字段对应的值 field通过Calendar提供的字段来拿
3)add(int field,int amount); 根据日历的规则,为给定的日历字段添加或减去指定的时间量
4)set(int year,int month,int date); 设置日历时间 年月日
3.举例
1)练习
import java.util.Calendar;
import java.util.Date;
public class CalendarTest03 {
public static void main(String[] args) {
//CaLendar的 getInstance 方法返回一个 CaLendar 对象
Calendar calendar=Calendar.getInstance();
//获取当前时间
Date time = calendar.getTime();
System.out.println(time);
//可以获取当前时间任何你想要获得的信息
int year=calendar.get(Calendar.YEAR);//获取当前时间的年份
System.out.println("年份:"+year);
int month=calendar.get(Calendar.MONTH);
System.out.println("月份:"+month+1);
int dayofYear=calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("这年第"+dayofYear);
// CaLendar 可以通过 get方法指定 字段值来获取当前时间的一些信息
System.out.println("--------------------------------- ");
//指定年月日、日分秒月份0-11表示1-12月
calendar.set(2022,12,25,23,59,60) ;
//获取指定的时间
Date date1=calendar.getTime();
System.out.println(date1);
}
}
2)键盘录入任意一个年份,获取任意一年的二月有多少天.拿Calander类面向对象来完成.
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year = sc.nextInt();
Calendar instance = Calendar.getInstance();
//设置到一年的3月1号
instance.set(year, 2, 1);
//减去一天,取那个天数就是二月份的天数
instance.add(Calendar.DAY_OF_MONTH, -1);
int day = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
}
}