前言

学完了java的一些常用api,由于太多太杂,没有办法全部记下来,于是在idea敲了一遍后决定再写一篇笔记方便我反复查看。

Date类

简述

  • java.util.Date 表示特定的瞬间,精确到毫秒
  • 大部分方法已经过时,被Calendar类取代

    常用方法

    public Date() 创建Date对象,表示当前时间
    public Date(long date)创建Date对象,表示指定时间

public void setTime(long time)设置/修改毫秒值
public long getTime() 获取时间对象的毫秒值

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Date;

//创建Date对象
Date now = new Date(); //获取当前时间对象
Date specificDate = new Date(125,9,25);//2025年10月25日(年份从1900开始,月份0-11)

//常用方法
long time = now.getTime(); //获取毫秒数
now.setTime(16324294400000L)//设置时间

//比较时间
Date date1 = new Date();
Date date2 = new Date();
boolean isAfter = date1.after(date2);
boolean isBefore = date1.before(date2);
int compare = date1.compareTo(date2);

SimpleDateFormat类

简述

  • java.text.SimpleDateFormat 日期格式化类
  • 用于Date与String之间的转换

    模式字母

字母 含义 示例
y yyyy→2025
M MM→09
d dd→15
H 时(0-23) HH→14
h 时(1-12) hh→02
m mm→30
s ss→45
S 毫秒 SSS→789
E 星期 E→周一

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.text.SimpleDateFormat;
import java.util.Date;

//创建格式化对象
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 E HH时mm分ss秒");

//Date → String
Date now = new Date();
String formattedDate = std1.format(now);
System.out.println(formattedDate);//2025-10-24 21:20:12

//String → Date
String dateStr = "2025-10-24 21:20:12";
Date date = sdf1.parse(dateStr);
System.out.println(sdf2.format(date));//2025年10月24日 21时20分12秒

Calendar 类

简述

  • java.util.Calendar 抽象类,提供日期计算功能
  • 不能直接实例化,通过静态方法获取对象

    获取Clendar对象

    1
    2
    3
    import java.util.Calendar;
    //获取当前时间的Calendar对象(默认时区、地区)
    Calendar calendar = Calendar.getInstance();

    字段常量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //年月日
    Calendar.YEAR//年份
    Calendar.MONTH//月份(0-11)
    Calendar.DATE//一个月中的日期
    Calendar.DAY_OF_MONTH//同DATE

    //星期相关
    Calendar.DAY_OF_WEEK//星期几(周日=1,周六=7)
    Calendar.DAY_OF_WEEK_IN_MONTH//当月第几个星期
    Calendar.WEEK_OF_MONTH//当月第几周
    Calendar.WEEK_OF_YEAR//当年第几周

    //时间字段
    Calendar.HOUT//12小时制的小时
    Calendar.HOUR_OF_DAY//24小时制的小时
    Calendar.MINUTE//分钟
    Calendar.SECOND//秒
    Calendar.MILLISECOND//毫秒

    //上下午
    Calendar.AM_PM//上午=0,下午=1

常用方法

获取字段值

1
2
3
4
Calendar cal = Calendar.getInstance();

//获取各个字段的值(其他同理)
int year = cal.get(Calendar.YEAR);

设置字段值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Calendar cal = Calendar.getInstance();

//单独设置字段
cal.set(Calendar.YEAR,2025);

//批量设置(年月日)
cal.set(2024,Calendar.December,25);

//批量设置(年月日时分秒)
cal.set(2024,Calendar.DECEMBER,25,18,30,0);

//清除字段
cal.clear(Calendar.MILLISECOND);//清楚毫秒
cal.clear();//清楚所有字段

日期计算

代码示例

1
2
3
4
5
6
7
8
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal2.add(Calendar.HOUR,2);

//比较方法
boolean isAfter = cal1.after(cal2);
boolean isBefore = cal1.before(cal2);]
boolean isEqual = cal1.equals(cal2);

细节

  • 1.获取日历对象
    • 细节:Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象
    • 底层原理:
    • 会根据系统不同时区来获取不同的日历对象,默认表示当前时间
    • 会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中
  • 细节2:
    • 月份:范围0~11 如果获取出来的是0,那么实际上是1月
    • 星期:在老外的眼里,星期日是一周的第一天