日期类日历类是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包下的,
https://vimsky.com/examples/detail/java-method-sun.util.calendar.BaseCalendar.Date.html
277

被折叠的 条评论
为什么被折叠?



