Date、Calendar和SimpleDateFormat常用方法。
1.Date常用类方法
package cn.meituan.classdate;
import java.util.Date;
/**
* 3. 日期和时间相关类:(掌握)
* 3.1
* Date类: 适用于特定的某一刻时间的场景,如:订单时间、入职时间等 日期相关类,指具体某一刻的时间
* 1.构造方法
* 1. Date() 创建的就是当前这一刻时间的对象
* 2. Date(long time) 将指定毫秒数的时间转换为对应的日期时间 距离1970年1月1日 0时0分0秒
*
* 2. 普通方法
* 1. long getTime()将当前Date对象转换为long类型的时间毫秒数
* 2. void setTime(long time)将long类型时间毫秒数转换为对应的Date对象
* 3. before(Date date)判断是否在指定日期之前 4. after(Date date)判断是否在指定日期之后
*/
public class DateTest {
public static void main(String[] args) {
//1. Date() 无参创建Date对象
Date date = new Date();
System.out.println(date); // Sun Mar 13 21:43:01 CST 2022
/*
* 2. Date(long time) 将指定毫秒数的时间转换为对应的日期时间 距离1970年1月1日 0时0分0秒
*/
// 获取当前时间毫秒数,调用方法:currentTimeMillis
long now = System.currentTimeMillis();
// 获取明天此刻的毫秒数
long tomorrow = now + 2 * 24 * 60 * 60 * 1000;// 加两天的毫秒数
long tomorrow1 = now + 24 * 60 * 60 * 1000;// 加一天的毫秒数
// 创建Date对象,传入tomorrow毫秒数【创建了明天此刻的Date对象】
Date date2 = new Date(tomorrow);
System.out.println("后天的这个时间为:" + date2);
System.out.println("今天的这个时间为:" +date);
// 普通方法
// 1. long getTime()将当前Date对象转换为long类型的时间毫秒数
long datetime = date.getTime();
System.out.println("date转为毫秒数为:"+datetime);
// 2. void setTime(long time)将long类型时间毫秒数转换为对应的Date对象
date.setTime(tomorrow1); // 将date设置成tomorrow这个时间了
System.out.println("date修改过后的时间:"+date);
// 3. before(Date date)判断是否在指定日期之前
boolean b1 = date.before(date2);
System.out.println("是否在指定日期之前:" + b1);
// 4. after(Date date)判断是否在指定日期之后
boolean after = date.after(date2);
System.out.println("是否在指定日期之前:" + after);
}
}
2.Calendar常用方法
package cn.meituan.classdate;
import java.util.Calendar;
import java.util.Date;
/**
* 3.3 Calendar日历类。主要用来操作一段时间和进行时间加减等场景 使用:
* 构造方法:(protected) Calendar rightNow =Calendar.getInstance();获取一个对象
*
* 常用方法:
* 1.int get(int field) 获取某一个字段(当前Calendar常量)的时间
* 2.abstract void add(int field, int amount) 添加时间操作
* field:是Calendar中的常量 月份从:0-11
* 如果月份超过11,则进年,如果日期超过所在月份的最大或者最小一天,则进月或者退月
* 3.void set(int field, int value)根据当前Calendar常量设置时间
* 4.Date getTime() 将Calendar对象转换为Date类型
* 5.voidsetTime(Date date) 将Date转换为Calendar
* 6.boolean after(Object when)
* 7.boolean before(Object when)
* 时间、日历、时间格式化类使用场景:【掌握】 Calendar抽象类,日历类。
* 主要是用来操作日期的,例如,加减日期,比较日期,判断一段时间等
* Date类:适用于具体某一刻时间,一般用在例如,订单时间、用户注册时间等
* SimpleDateFormat类:将日期和字符串进行格式转换
*
* @author Mixi
*
*/
public class Calendardemo {
public static void main(String[] args) {
// 创建一个Calendar对象
Calendar rightNow = Calendar.getInstance();// 多态的方式创建对象 向上转型
//
System.out.println(rightNow);
// 1.int get(int field) 获取某一个字段(当前Calendar常量)的时间
int year = rightNow.get(Calendar.YEAR);
int month = rightNow.get(Calendar.MONTH) + 1;
int day = rightNow.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
/**
* 2.abstract void add(int field, int amount) 添加时间操作 field:是Calendar中的常量
* amount:如果是正数,表示+,如果是负数,就是减。但是注意,月、日都会导致进位退位
* 月份从:0-11
* 如果月份超过11,则进年,
* 如果日期超过所在月份的最大或者最小一天,则进月或者退月
*/
rightNow.add(Calendar.YEAR, 4);
rightNow.add(Calendar.MONTH, 11);
int newyear = rightNow.get(Calendar.YEAR);
int newmonth = rightNow.get(Calendar.MONTH);
System.out.println(newyear + "年" + newmonth + "月" + day + "日");
// 3.void set(int field, int value)可以直接设置某一个字段的值,例如设置年
// set(Calendar.YEAR,2050);
rightNow.set(Calendar.YEAR, 2041);
int finalyear = rightNow.get(Calendar.YEAR);
System.out.println(finalyear + "年" + newmonth + "月" + day + "日");
// 4.Date getTime() 将Calendar对象转换为Date类型
Date time = rightNow.getTime(); :Wed Feb 13 15:55:13 CST 2041
System.out.println("Calendar对象转换为Date类型为:"+time);
// 5.void setTime(Date date) 将Date转换为Calendar
rightNow.setTime(time); // 将Date转换为Calendar
System.out.println("Date转换为Calendar为:"+rightNow);
}
}
3.SimpleDateFormat常用方法
package cn.meituan.classdate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatclass {
public static void main(String[] args) throws ParseException {
// 创建一个Date对象获取当前时间 无参构造
Date now = new Date(); // 当前的时间
System.out.println("当前的时间为:" + now);
// 创建一个Date对象获取当前时间 带参构造方法
// 将时间进行更改为明天的这个时间
long today = System.currentTimeMillis();
Date d1 = new Date(today);
System.out.println("当前的时间为:" + today);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// 将Date对象转换成成字符串。
String format = sdf.format(now);
System.out.println("将Date对象转换成成字符串:" + format);// 2022年03月13日 15:54:23
// 将字符串转换为Date对象
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// 这里的格式必须与源字符串格式一一对应
Date parse = sdf1.parse(format);
System.out.println("字符串转换为Date对象:" + parse);// Sun Mar 13 15:54:23 CST
// 2022
// 补充:sdf.applyPattern(String pattern);可以将SimpleDateFormat重新设置模板格式
sdf1.applyPattern("yyyy/MM/dd HH:mm:ss"); // sdf对象重新设置模板
String format2 = sdf.format(parse);
System.out.println("重新设置将Date对象转换成成字符串:" +format2);
}
}