日期类
java.util.Date(日期)
- new Date()
创建一个 当前系统时间的日期对象- new Date(long)
创建一个 距离 1970/1/1 多少毫秒的时间- toInstant()
- Date.from(instant)
- setTime(time) / getTime()
设置 / 获取 距离 1970/1/1 的毫秒数- System.currentTimeMillis()
获取系统时间戳- before(date) / after(date)
判断日期是否在某个日期的前/后- SimpleDateForm(pattern)
日期格式化类
- format(date)
将日期转成 字符串- parse(str)
将 字符串转成 日期- setTimeZone(timezone)
设置时区- pattern模式匹配串
yyyy 年份
MM月份
dd日/天
HH / hh小时
mm分钟
ss秒
SSS毫秒
E星期
java.util.Calendar(日历)
- getInstance()
创建日历对象
Calendar rightNow = Calendar.getInstance();
- Calendar常量
- 日期常量
YEAR
MONTH
DAY_OF_MONTH / DATE
DAY_OF_YEAR
DAY_OF_WEEK
HOUR_OF_DAY
- 时间常量
MINUTE
SECOND
MILLISECOND
- 星期常量
- 月份常量
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//将日历重置为2021年8月1日
calendar.set(2021,7,1);
System.out.println(calendar);
System.out.println("当前年份为:"+calendar.get(Calendar.YEAR));
//获取月份的最大值
int actualMaximum = calendar.getActualMaximum(Calendar.MONTH);
System.out.println(actualMaximum);
//获取高精度时间戳
Instant instant = calendar.toInstant();
System.out.println(instant);
日历的制作
public class CalendarPrintTest {
public static void main(String[] args) throws Exception{
// 8 代表八月份
showCalendar(2021,8);
}
public static void showCalendar(int year , int month){
System.out.println( "\t\t"+year + "年" + month + "月");
//将传入的日期月份 - 1
month = month - 1 ;
String[] weeks = {"一","二","三","四","五","六","日"} ;
for (String week:weeks) {
System.out.print(week + "\t");
}
System.out.println();
//构建一个日历对象
Calendar calendar = Calendar.getInstance();
//调整日历到对应的时间
calendar.set(year , month,1);
//获取1号是星期几 (1 - 7)代表周日到周六
int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
//对周日进行特殊处理
if (week == 0){
week =7 ;
}
//week = 7 前面要打印6个空格
//week = 1 前面要打印0个空格
//week = 2 前面要打印1个空格
//打印日历中该月的空格数
for (int i = 1; i < week; i++) {
System.out.print("\t");
}
//获取当前月最大的天数
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//i 代表当月的每一天
for (int i = 1; i < maxDay; i++) {
System.out.print(i + "\t");
//换行的问题
//空格数+ 对应的日 如果是7的倍数 进行换行
if ((week - 1 +i )%7 == 0){
System.out.println();
}
}
}
}
Calendar对象常见的方法
- set(year , month , day)
设置日历、month 从0开始 - set(field , val)
field 代表 Calender常量,val 代表设置 常量代表的 值 - get(field)
获取 Calender常量对应的值 - getActualMaximum(field)
获取 Calender 常量 代表的 最大值 - toInstant()
- getTime()
获取 Date 对象 - setTimeZone(timezone)
设置时区
PS : 月份 0 - 11 代表 1- 12月
星期 1 - 7 代表 周日 - 周六
时区
- TimeZone.getAvailableIDs()
获取系统支持的所有时区 - TimeZone.getTimeZone(“Asia/Shanghai”)
获取中国时区 - toZoneId()
格式化字符
SimpleDateFormat
//创建一个日期对象
Date date= new Date();
//创建一个格式化日期的对象
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E a");
//将日期以指定格式转换成字符串
String format = df.format(date);
System.out.println(format);
//重新设置模式匹配串
df.applyPattern("yyyy-MM-dd");
String str = "1998-07-17";
Date parse = df.parse(str);
System.out.println(parse);