Time
java.util老包
date与calender都基于当前时间距离utc零时区的1900年1月1日0时0分0秒超过多少毫秒,基于毫秒数计算年月日时分秒
Date日期
不仅仅包含年月日
无参new Date()
Thu Mar 03 08:29:08 CST 2022
当前时间
有参new Date(10,2,2)
Wed Mar 02 00:00:00 CST 1910
月+1,年1900+10,日不变
calendar.FEBRUARY传月逻辑易理解
date.getYear: -1900
date.getMonth:
缺点:
Zone时区无法修改
月份年份不直观
Calender日历
日本japanese和东南亚buddhist历法不同Gregory历
Calendar.getInstance()
calendar.getMonth() 从零开始
calendar.getDate() 正常时间
calendar.add(Calendar.MOUNTH,1) 加一个月
new Calendar.Builder
builder.setTimeZone时区
bulider.setLocale地区
builder.setInstant 传入毫秒数
缺点
能指定历法时区
月设置不合理
set操作是对当前对象直接操纵,并没有创建副本
java.time新包
tips:这里还是推荐在使用时查看jdk文档
时区本初子午线0,中国+8
ZoneId.of
传时间
ZoneId.of("UTC+0")
UTC、UTC+0☞零时区的时间 和GMT基本等价
往东加时区,往西减时区
传地区也可
("Asia/Shanghai")
TimeZone.getTimeZone(zid)
Clock.off测试常用,不深入研究
instant.now()
Instant.truncatedTo(ChronUnit.HOURS)取整
instant.of转时区
localDateTime.now
LocalDateTime.of(2022,2,13,0,0,0)
LocalDateTime.atZone(Zoneid.of)
SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
sdf.parse("2022-02-13 17:00:00")
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
dtf.format(dtf.(ZoneDateTime.now()))