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
hA.M./P.M. (1~12)格式小时11
H一天中的小时 (0~23)21
m分钟数23
s秒数56
S毫秒数234
E星期几Tuesday
D一年中的日子360
w一年中第几周20
W一个月中第几周2
aA.M./P.M. 标记PM
k一天中的小时(1~24)24
KA.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.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
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 新增的,我们放在后续详解。

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值