Java中常用日期类

Date

date类为表示时间的类,其对时间的精准度至毫秒。
其出现时间及早,在jdk1.0版本的时候就已经出现,但随着版本的更新,大量构造方法已经不能使用,目前可以使用的构造方法有两个。

无参构造方法:通过获取当前时间戳,返回1970年至当前时间差多少毫秒

含参构造方法:只有一个参数,参数为毫秒数据。
表示含义:将传入的毫秒级参数转换成日期的形式

SimpleDateFormat

SimpleDateFormat类是用于展示日期的类,可以根据自己的设定来对展示时间的格式进行设定。

常用构造函数:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss");

其中y表示年,因为年是四位数,所以必须要四个y来展示
M表示月,月份由两位构成,所以有两个M
d表示日,H表示时,m表示分,s表示秒
其中每个中间的展示内容都可以根据规定的格式进行修改

其构造方法是建立结构的一个方式,在后面调用SimpleDateFormat类的对象中的方法时,需要按照该构造方法格式来对方法调用,参考代码如下:

//当我们此处需要使用parse方法时
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss");
String t = format.format(new Date());
//此处parse方法为将时间转换为Date类的格式,用于类的计算
Date date = format.parse("2021-05-20 13:14 21");
//得到的结果为方法中的时间距离初始时间的毫秒数
long ds = (date.getTime()- new Date().getTime())/1000/60/60/24;
//此时得到的毫秒数,就是当前时间和输入时间的天数。

Calendar

上述日期类都是可以调用系统的时间,但在不同时区时,通过这样的方法无法做到准确的使用时间,Java中为了解决时区的问题,创建了Calendar类,,其可以根据不同的时区,实现对不同的时间的一个准确使用。

Calendar 表示日历类,该类具有一定的特殊性,因为Calendar本身为抽象类,所以理论上是不可以被直接创建对象的,但是因为该抽象类内部具有一个方法,可以对其本身进行创建,所以当我们需要使用该类时,可以采用调用该类中的静态方法来进行对象的创建,方法如下:

Calendar c1 = Calendar.getInstance();

Calendar类不能直接调用年月日等内容,而是将年月日储存在了一个数组中,年月日分别定义成为了不可变的常量,分别对应数组的下标。

例如:定义了
public final static int ERA = 0;
public final static int YEAR = 1;
public final static int MONTH = 2;
public final static int DATE = 5;
public final static int HOUR = 10;
public final static int MINUTE = 12;
public final static int SECOND = 13;
等静态常量,其分别对应数组中的一个下标,在调用get方法时,传入参数就是这些数组下标

例如:
获取当前年份

Calendar c1 = Calendar.getInstance();
//获取当前年份,因为其数组为int性,所以直接传出参数即为当前年份
int year = c1.get(Calendar.YEAR);

获取当前是本年度的第几天:

Calendar c1 = Calendar.getInstance();
//今天是当前年份的第n天
int day = c1.get(Calendar.DAY_OF_YEAR);
//今天是当前月份的第N天
int day_month = c1.get(Calendar.DAY_OF_MONTH);

Calendar类为日历类,还可以设置当前时间,使用set方法,set方法有两个参数,参数1为数组下标,参数2为要改为的参数

Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR,2020);
//改变后日历为2020年

Calendar类还可以对日期进行算数运算,例如可以增加年数

使用add方法对日期进行加法,参数1为数组下标,参数2为加的数量

Calendar c1 = Calendar.getInstance();
c1.add(Calendar.MONTH,12);
/*注:
①月份显示为0~11
②此处加了13个月,超过月数最大数,但是月的单位增加1,年的数量就会增加1,所以此处应该显示的为当前日期的下一年的当前日期
*/

如果想要减去月份,只需将参数2改为负数

Calendar类获取日历时间,返回Date对象使用getTime()

Calendar c1 = Calendar.getInstance();
Date d = c1.getTime();

获取当前月份的最大天数,使用GetActualMaximum(Calendar.DAY_OF_MONTH);

int m = c1.getActualMaximum(Calendar.DAY_OF_MONTH);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值