Java的日期类、日历类

日期类日历类是java看起来很简单用起来很绕的东西,所以写一篇笔记记录一下

 Date

创建一个最简单的Date对象(没有传参的Date对象默认是当下时间,就是now)

Date date = new Date();

 我们来看看new Date()里都可以放什么参数

 下面呢根据参数每一个创建一个Date对象来看看区别(传入的参数是哪年哪月哪天哪xxxx那这个对象就是哪xxxx,等于设置了Date对象的时间)

1.传入长整型参数

Date date = new Date(123456789L);

 2.传入字符串类型的参数,这个方法已经过时了,且不太好用,只能输入以下格式的字符串才能转换日期,为什么时间加了14个小时嘞?

Date date = new Date("Fri Jan 02 18:17:36 CST 1970");

 3.传入年月日,我们先看一下方法的说明(也是过时的方法)

这个是util包下的

这个是sql包下的 

 

 由此可见传入的年需要减去1900,月份减去1才是当年当月

Date date = new Date(2022-1900, 6, 14);

 4.传入年月日时分和年月日时分秒(依旧过时),其实就是初始化时间更精准了,也没别的区别

Date date = new Date(2022 - 1900, 6, 14, 10, 23);
Date date2 = new Date(2022 - 1900, 6, 14, 10, 26, 30);

 

 下面有一个 sun.util.calendar.BaseCalendar类下的内部类Date,它是一个匿名函数方法,需要重写get和set normalizedYear方法

我们来看看它的方法是怎么实现的,给了一个初始的时间戳

空构造方法输出对应的时间是Thu Jan 01 08:12:11 CST 1970,它十二个月是从1开始计算,星期是从周日开始循环,周日为1

 具体怎么使用,请自行前往下面的网址(不常用,满足强迫症学者)Java BaseCalendar.Date方法代码示例 - 纯净天空 (vimsky.com)https://vimsky.com/examples/detail/java-method-sun.util.calendar.BaseCalendar.Date.html

 简单演示一下设置时间格式

Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parse = sf.parse("2022-07-14 09:48:58");

 

 来看看Date的get方法

 除了获取时间戳,其他都过时了,所以就不讲啦

Calendar

我们简单的创建一个日历类对象解析以下输出内容,没有参数初始化就是当下时间

Calendar c = Calendar.getInstance();
java.util.GregorianCalendar[

time=1657768486868,//当前时间戳

areFieldsSet=true,//是字段集

areAllFieldsSet=true,//如果 fields[] 与当前的设置时间同步,则返回 true

lenient=true,//如果所有字段都已设置,则为True。

zone=sun.util.calendar.ZoneInfo[//时区

id="Asia/Shanghai",//时区是亚洲/上海

offset=28800000,//与标准时间的偏移量

dstSavings=0,//以毫秒为单位返回需要增加到本地标准时间以获得挂钟时间的时间量

useDaylight=false,//检查此SimpleTimeZone是否使用夏时制

transitions=19,//过渡

lastRule=null],//最后规则

firstDayOfWeek=1,//一周的第一天

minimalDaysInFirstWeek=1,//一个月或一年中的第一周所需的天数,可能的值从1到7

ERA=1,//年代

YEAR=2022,//年

MONTH=6,//月,从0开始

WEEK_OF_YEAR=29,//当前周是一年的第几周

WEEK_OF_MONTH=3,//本月的第几周

DAY_OF_MONTH=14,//本月的第几天

DAY_OF_YEAR=195,//本年的第几天

DAY_OF_WEEK=5,//本周的第几天,周日是第一天

DAY_OF_WEEK_IN_MONTH=2,//指示当前月中的第几个星期

AM_PM=0,//上午上还是下午

HOUR=11,//时

HOUR_OF_DAY=11,//一天的第几个小时

MINUTE=14,//分

SECOND=46,//秒

MILLISECOND=868,//指示一秒中的毫秒

ZONE_OFFSET=28800000,//以毫秒为单位指示距 GMT 的大致偏移量

DST_OFFSET=0]//以毫秒为单位指示夏令时的偏移量

有了上面的解释,需要什么就Calendar.什么

总结一下

如果需要简单的时间显示,可以用sql包下的,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尢词

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值