Java日期类笔记

162 阅读1分钟

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()))