Date、SimpleDateFormat 、 Calendar
一、Date 日期类
1.1 简介
java.util.Date 是一个用来表示日期的类。
java底层使用long类型表示日期,long类型的值是当前时间的毫秒值,这个毫秒值是基于1970年1月1日 0时0分0秒 的差值,这个时间被认为是计算机的起始时间(纪元时间)。
Date类中有很多的构造方法和其他方法都是过时的了,建议不要使用。
1.2 常用方法
Date() | 无参构造器,创建对象并初始化 |
---|---|
Date(long date) | 可以指定时间的构造器(指定毫秒值), 即1970年1月1日00:00:00 起的毫秒值。 |
after(Date when) | 判断某个日期是否在指定日期之后 |
before(Date when) | 判断某个日期是否在指定日期之前 |
compareTo(Date anotherDate) | 对两个日期进行比较 如果日期a>日期b,则返回1,如果日期a<日期b,则返回1,如果a==b,则返回0 |
getTime() | 获取一个时间的毫秒值 |
1.3 常用方法演示
1.3.1 Date 无参构造器,创建对象并初始化
public static void main(String[] args) {
//创建一个日期对象
Date date = new Date();
//输入日期对象
System.out.println(date);//输出的是系统当前的时间
}
1.3.2 可以指定时间的构造器(指定毫秒值)
public static void main(String[] args) {
//创建一个日期对象,并传入一个数值(毫秒)
Date date = new Date(1000);
//输入日期对象
System.out.println(date);
}
1.3.3 after(Date when) 判断某个日期是否在指定日期之后
public static void main(String[] args) {
//创建日期对象,并传入一个数值(毫秒)
Date date = new Date(1000);
Date date1 = new Date(2000);
// 判断某个日期是否在指定日期之后
boolean flag = date1.after(date);
System.out.println(flag);//true 表示date1时间在date时间之后,反之就在之前
}
1.3.4 before(Date when) 判断某个日期是否在指定日期之前
public static void main(String[] args) {
//创建日期对象,并传入一个数值(毫秒)
Date date = new Date(1000);
Date date1 = new Date(2000);
// 判断某个日期是否在指定日期之前
boolean flag = date.before(date1);
System.out.println(flag);true 表示date时间在date1时间之前,反之就在之后
}
1.3.5 compareTo(Date anotherDate) 对两个日期进行比较 如果a>b,则返回1,如果a<b,则返回1,如果a==b,则返回0
public static void main(String[] args) {
//创建日期对象,并传入一个数值(毫秒)
Date date = new Date(1000);
Date date1 = new Date(2000);
// 比较两个日期
int compare = date.compareTo(date1);
System.out.println(compare);//返回-1,表示date日期比date1日期小
}
1.3.6 getTime() 获取一个日期的毫秒值
public static void main(String[] args) {
//创建日期对象,并传入一个数值(毫秒)
Date date = new Date(1000);
//创建另一个日期对象
Date date1 = new Date();
//获取这两个日期的毫秒值
System.out.println(date.getTime());
System.out.println(date1.getTime());
}
二、SimpleDateFormat
2.1 简介
java.text.SimpleDateFormat类是一个用来格式字符串的类,继承自DateFormat类。最常见的就是用来对Date日期类和String字符串类之间的转换。
2.2 通过SimpleDateFormat类把日期转换为字符串
第一步:创建一个日期对象(或提供一个日期对象)
//创建日期对象
Date date = new Date();
第二步:创建SimpleDateFromat对象,并指定格式
//创建SimpleDateFormat对象,并指定目标格式,如 2021-1-14 15:40:45
//yyyy-MM-dd HH:mm:ss yyyy表示年,MM表示月份,dd表示天 HH表示小时,mm分钟,ss表示秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
第三步:调用format方法,对日期对象进行格式化
public static void main(String[] args) {
//创建日期对象
Date date = new Date();
//创建SimpleDateFormat对象,并指定目标格式,如 2021114 15:40:45
//yyyy-MM-dd HH:mm:ss yyyy表示年,MM表示月份,dd表示天 HH表示小时,mm分钟,ss表示秒
//其它格式:yyyy年-MM月-dd日 // yyyyMMdd
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//调用format()方法,进行格式化
String format = sdf.format(date);
System.out.println(format);
}
注意:还可以在指定格式的时候加上一个字母,比如 Y 表示几年,E 表示星期几,D表示这年的第几天,W 表示这个月的第几周:
new SimpleDateFormat("Y yyyy-MM-dd HH:mm:ss");
new SimpleDateFormat("E yyyy-MM-dd HH:mm:ss");
new SimpleDateFormat("D yyyy-MM-dd HH:mm:ss");
new SimpleDateFormat("W yyyy-MM-dd HH:mm:ss");
需要了解更多的日期格式方法的,可以去jdk api中看看
2.3 字符串转换为日期
第一步:提供一个字符串
//提供一个字符串
String date = "2021年2月14日";
第二步:创建SimpleDateFromat对象,并指定格式
//创建SimpleDateFormat对象,并指定字符串的日期格式
SimpleDateFormat sfd = new SimpleDateFormat("yyyy年MM月dd日");
注意:指定的格式要与字符串的格式相同,例如字符串的格式为2020-12-21,
SimpleDateFormat的格式就为yyyy-MM-dd,如果上下格式不相同,会出现异常
第三步:调用parse()方法,解析字符串为日期
public static void main(String[] args) throws ParseException {
//提供一个字符串
String date = "2021年2月14日";
//创建SimpleDateFormat对象,并指定字符串的日期格式
SimpleDateFormat sfd = new SimpleDateFormat("yyyy年MM月dd日");
//parse(),解析字符串为日期
Date parse = sfd.parse(date);
System.out.println(parse);
}
2.4 关于数据库中日期类与java中的日期类的转化
1、java中日期类: java.util.Date
2.数据库中日期类: java.sql.Date
java中的代码:
String date = "2020-12-21";//日期字符串
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");//指定为日期格式
java.util.Date date2 = sdf.parse(date);//解析字符串
Date date3 = new Date(date2.getTime());//注意这里的new Date()是java.sql.Date
//这样处理后,date3就可以当成参数传到数据库了
三、 Calendar
3.1 简介
java.util.Calendar表示日历类,用于日期的运算和取值 。
Calendar是一个抽象类,不能通过new来创建对象,使用静态方法getInstance()获取一个实例 。
3.2 常用的方法
方法或属性 | |
---|---|
getInstance() | 获取实例 |
getTime() | 返回一个Date对象 |
getTimeInMillis() | 获取时间的毫秒值 |
int get(int field) | 返回给定日历字段的值 |
3.3 常用方法演示
3.3.1 获取一个日历实例(对象) getInstance()
//获取一个Calendar实例
Calendar calendar = Calendar.getInstance();
3.3.2 通过一个Calender对象获取一个Date对象
//获取一个Calendar实例
Calendar calendar = Calendar.getInstance();
//将calendar转换为Date
Date date = calendar.getTime();
System.out.println(date);
3.3.3 获取时间的毫秒值 getTimeInMillis()
//获取一个Calendar实例
Calendar calendar = Calendar.getInstance();
//获取毫秒值
long millis = calendar.getTimeInMillis();
System.out.println(millis);
3.3.4 int get(int field)返回给定日历字段的值,比如日期的年、月、日等等
public static void main(String[] args) {
//获取一个Calendar实例
Calendar calendar = Calendar.getInstance();
//get(int filed) 获取日期的指定字段
int year = calendar.get(Calendar.YEAR);//获取年年
int month = calendar.get(Calendar.MONTH);//获取月份(这里的月从0-11)
int day = calendar.get(Calendar.DATE);//获取日
System.out.println("日期为:" +year+"年"+(month+1)+"月"+day+"日");
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//返回一个月中的第几天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//返回一周中的第几天,1-7
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//返回一年中的第几天
int hour = calendar.get(Calendar.HOUR_OF_DAY);//获取小时 24小时制
int minute = calendar.get(Calendar.MINUTE);//获取分钟
int second = calendar.get(Calendar.SECOND);//获取秒
System.out.println("日期为:" +year+"年"+ (month+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
//给日期添加时间add()
calendar.add(Calendar.YEAR,1);//当前时间增加1年
calendar.add(calendar.DATE,2);//增加两天
calendar.add(calendar.HOUR,5);//增加5小时
System.out.println(calendar.getTime());
}