Java 日期处理

主要从以下三方面讲解:

  • java.util 包提供了 Date 类来封装当前的日期和时间。
  • java.util 包提供了 Calendar 类用来设置和获取日期数据的特定部分。
  • java.text 包提供了 SimpleDateFormat 类来格式化日期的格式。

Date类

Date类的构造函数

Date 类主要提供了两个构造函数(其他的均过时了,有@Deprecated修饰):

//使用当前日期和时间来初始化对象
public Date() {
    this(System.currentTimeMillis());
}

//date参数是从1970年1月1日起的毫秒数
public Date(long date) {
    fastTime = date;
}

Date类的方法

方法 描述
boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
int compareTo(Date date) (掌握) 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
long getTime( ) 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
void setTime(long time) 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
int hashCode( ) 返回此对象的哈希码值。
String toString( ) 把此 Date 对象转换为以下形式输出
// “EEE MMM dd HH:mm:ss zzz yyyy”;
Object clone( ) 返回此对象的副本。

SimpleDateFormat 类

我们一般用它来进行日期的格式化和分析。直接上代码:(掌握)

Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("G yyyy-MM-dd HH:mm:ss.SSS");
String str = sdf.format(now);
System.out.println(str);
String parseStr = "公元 2024-01-22 16:58:33.126";
try {
    Date date = sdf.parse(parseStr);
    System.out.println(date);
} catch (ParseException e) {
    throw new RuntimeException(e);
}

输出如下:

公元 2024-01-22 17:01:27.194
Mon Jan 22 16:58:33 CST 2024

日期和时间的格式化编码

时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:

字母 描述 示例
G 纪元标记 公元
y 四位年份 2023
M 月份 July or 07
d 一个月的日期 10
h A.M./P.M. (1~12)格式小时 11
H 一天中的小时 (0~23) 21
m 分钟数 23
s 秒数 56
S 毫秒数 234
E 星期几 Tuesday
D 一年中的日子 360
w 一年中第几周 20
W 一个月中第几周 2
a A.M./P.M. 标记 PM
k 一天中的小时(1~24) 24
K A.M./P.M. (0~11)格式小时 10
z 时区 CST

Calendar类

当我们需要设置或获取日期数据的特定部分时,需要进行特定部分的加减时,可以使用Calendar 类。

Calendar对象的创建

Calendar c = Calendar.getInstance();//默认是当前日期

Calenda****类对象字段类型

常量 描述
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期几

Calendar类常用方法

方法 描述
public final void set(int year, int month, int date) 通过年月日参数设置,注意month值的范围,0~11,即0代表1月
public final void set(int year, int month, int date, int hourOfDay, int minute) 通过年月日时分设置
public final void set(int year, int month, int date, int hourOfDay, int minute, int second) 通过年月日时分秒设置
public void set(int field, int value) 利用字段类型设置对应的值
public int get(int field) 利用字段类型获取对应的值
public void setTimeInMillis(long millis) 通过时间戳设置时间
public long getTimeInMillis() 获取当前对象的时间戳
abstract public void add(int field, int amount);
通过debug发现,该抽象方法由GregorianCalendar中的方法实现:
public void add(int field, int amount)
在指定字段类型上加减时间。
amount 为正数即为加,为负数即为减。

其他

实际的项目中,会经常用到 Instant 、LocalDate、LocalTime、LocalDateTime,这几个类是java1.8 新增的,我们放在后续详解。

你可能感兴趣的:(Java,java,开发语言)