时间处理-Java

时间处理

Java1.0有一个Date类,事后证明它过于简单,当Java1.1引入Calendar类之后,Date类中的大部分方法就被弃用了。但是,Calendar的API还不够给力,它的实例是易变的,并且它没有处理诸如闰秒这样的问题。Java SE8中引入的Java.time.API,它修正了过去的缺陷。
calendar是共享变量,并且这个共享变量没有做线程安全控制。当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好time值 另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。
在Java中,Instant表示事件线上的某个点。被称为“新纪元”的事件线原点被设置为穿过伦敦格林威治皇家天文台的本初子午线所处时区的1970年1月1日的午夜。从该原点开始,时间按照每天86400秒先前或向回度量,及渠道纳秒。
LocalDate是带有年、月、日的日期。为了构建LocalDate对象,可以用now或of静态方法:

LocalDate today=LocalDate.now();
LocalDate alonezosBirthday=LocalDate.of(1993,10,8);
alonezosBirthday=LocalDate.of(1993, Month.OCTOBER,8);

LocalDate的方法:
在这里插入图片描述
在这里插入图片描述
除了LocalDate之外,还有MonthDay、YearMonth和Year类可以描述部分日期。
日期调整器
对于日期安排应用来说,经常需要计算诸如“每个月的第一个星期二”这样的日期。TemporalAdjusters类提供了大量用于常见调整的静态方法。可以将调整方法的结果传递给with方法。例如,某个月的第一个星期二计算方法如下:

LocalDate firstTuesdat=LocalDate.from(1993,10,1).with(
                TemporalAdjusters.nextOrSame(DayOfWeek.THURSDAY)
        );
    }

TemporalAdjusters类中的日期调整器:
在这里插入图片描述
还可以通过实现TemporalAdjuster接口来创建自己的调整器。
本地时间
LocalTime表示当日时刻,可以用now或of方法创建其实例:

LocalTime rightNow=LocalTime.now();
LocalTime bedtime=LocalTime.of(23,23,23);

LocalTime的方法:
在这里插入图片描述
注:plus和minus操作是按照一天24小时循环操作的。

此外,LocalDateTime可以设置年月日时分秒,相当于LocalDate + LocalTime.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值