Date
Date 主要的作用是对某个特定的时间点的操作,java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。 使用java.util.Date包
创建对象:
Date date = new Date(); 当前时间对象
Date date = new Date(时间对象) ; 具体某个时间点的对象
主要方法:
getTime(); 将指定的时间转为时间戳
setTime() ; 将指定的时间戳转为时间
before(); 判断当前时间是否早于指定时间
after() ; 判断当前时间是否晚于指定时间
public class DateDemo {
public static void main(String[] args) {
Date date = new Date(); // 无参构造
System.out.println(date); // 打印出的结果: Tue Mar 23 13:31:01 CST 2021
// ======================打印明天同一时刻的对象 ======================
long tomorrow = System.currentTimeMillis() +24*60*60*1000;
Date after = new Date(tomorrow); // 有参构造, 指定具体某个时间点的对象
System.out.println(after); //Tue Mar 23 15:31:56 CST 2021
long d1 = after.getTime(); //将指定的时间转为时间戳
System.out.println(d1); // 1616398316076
after.setTime(d1); //将指定的时间戳转为时间
System.out.println(after); //Tue Mar 23 15:36:00 CST 2021
boolean result = date.after(after); // 判断当前时间是否晚于指定时间
System.out.println(result); //false
boolean result1 = date.before(after); //判断当前时间是否早于指定时间
System.out.println(result1); //true
}
}
## SimpleDateFormat
前面说过Date , 但是Date打印出来的不是很美观, 例如: Tue Mar 23 15:36:00 CST 2021。
SimpleDateFormat的作用:
把一个Date对象可以转成我们希望的一个结果样式(字符串);
也可以把一个字符串解析为一个Date对象。
格式化的模板
```java
年:yyyy
月:MM
日:dd
时:HH
分:mm
秒:ss
毫秒:SS
创建对象:
SimpleDateFormat sdf = new SimpleDateFormat(“模板样式”);
样式例如: yyyy-MM-dd HH:mm:ss
主要方法:
format(); 将date对象格式化为对应的模板的样式
parse(); 将格式化的模板对象, 解析为date对象, 注意解析时的模板必须与创建对象时的模板一致;
例如: 创建对象时模板格式: yyyy-MM-dd HH:mm:ss
解析时的模板格式也必须为: yyyy-MM-dd HH:mm:ss
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date = new Date(); // 创建date对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 创建指定的模板格式对象, yyyy-MM-dd HH:mm:ss
// ============ 格式化=============
String time = sdf.format(date); // 使用format方法格式化date
System.out.println(time);
// ============ 解析 =============
Date date1 = sdf.parse("2021-03-22 20:41:47"); // 使用parse方法解析模板, 得到date对象
System.out.println(date1);
// ============模板============
sdf.applyPattern("yyyy年MM月dd日 HH时mm分ss秒"); // 如果想要修改模板的格式, 使用applyPattern方法即可
System.out.println(sdf.format(date));
System.out.println(sdf.parse("2021年03月22日 20时45分53秒"));
}
}
Calendar
Calendar 抽象类, 主要是对日历中的一些方法使用, 日期的计算 , 判断时间的。
创建对象:
虽然是抽象类, 但是他有一个 getInstance()静态方法, 可以创建对象, 其实内部创建的是一个Calendar的子类对象。
Calendar cal = Calendar.getInstance();
常用属性:
YEAR 年
MONTH 月,注意月份是从0开始的, 0-11
DAY_OF_MONTH 日
DAY_OF_WEEK 这周的第几天, 也是从星期日开始的
DAY_OF_YEAR 今年的第几天
HOUR 时
MINUTE 分
SECOND 秒
常用方法:
int get(int field) 通过指定的字段获得对应的值 -> 获得当前的年月日…
set(int field,int value) 给指定的字段设置值,注意把新值覆盖之前的这个字段值,会自动的进位
add(int field,int amount) 这个方法和set差不多,但是把amount的值累加到当前设置的字段原有的值之上
setTime(Date d) 可以直接把一个Date设置进去
Date getTime() 可以获得日历对象中的当前日期对象
public class CalendarDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar cal = Calendar.getInstance();
// ============== get 方法 ==============================
int year = cal.get(cal.YEAR); //年
int month = cal.get(cal.MONTH); // 月, 注意月份是从0开始的, 0-11, 所以给用户看需要加1
int day_month = cal.get(cal.DAY_OF_MONTH); // 这个月的多少号
int day_week = cal.get(cal.DAY_OF_WEEK); // 这周的第几天, 外国人是从星期日开始算的
int day_year = cal.get(cal.DAY_OF_YEAR); // 今年的第多少天
int hour = cal.get(cal.HOUR); // 时
int minute = cal.get(cal.MINUTE); // 分
int second = cal.get(cal.SECOND); // 秒
System.out.println(year);
System.out.println(month);
System.out.println(day_month);
System.out.println(day_week);
System.out.println(day_year);
System.out.println(hour);
System.out.println(minute);
System.out.println(second);
// =============== set 方法 ================================
cal.set(cal.YEAR, 2222);
int year1 = cal.get(cal.YEAR); //年
System.out.println(year1); // 2222年
cal.set(cal.YEAR, 2021);
// =============== add 方法 =============================
long now = System.currentTimeMillis();
Date date = new Date(now);
System.out.println(date); //Tue Mar 23 14:16:26 CST 2021
cal.add(cal.MONTH, 20); // 当前月份加20个月
int year2 = cal.get(cal.YEAR); //年
int month2 = cal.get(cal.MONTH); // 月, 注意月份是从0开始的, 0-11
System.out.println(year2); // 2022年
System.out.println(month2); // 10 >> 11月
// ============== setTime 方法=======================
long now1 = System.currentTimeMillis()+24*60*60; // 显示明天的此刻
Date date1 = new Date(now1);
cal.setTime(date1);
int date_month1 = cal.get(cal.DAY_OF_MONTH);
System.out.println(date_month1); // 查看 明天的日期 23 >> 24日
// ============= getTime 方法 ======================
Date dd = cal.getTime();
System.out.println(dd); //Tue Mar 23 14:23:30 CST 2021
}
}