java8 time包获取指定日期时间

我们都知道,java8新增的time包中使用 LocalDateTime.of() 方法能方便的生成指定时间。

但是有时候需要获取生活中的一些指定日期时间,如获取固定的每月几日或者每周周几,这样的场景;of()方法就捉襟见肘了。

不要着急,LocalDateTime还提供了一个 with() 方法,能够方便的达到以上目的。

先看举例:

需求:获取当前周四日期和当月6号日期

public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime now = LocalDateTime.now();
        System.out.println("now: " + now.format(dtf));
        LocalTime localTime = LocalTime.of(0, 0, 0);
        LocalDateTime ldt1 = LocalDateTime.of(LocalDateTime.now()
        	.with(ChronoField.DAY_OF_WEEK, 4).toLocalDate(), localTime);
        System.out.println("ldt1: " + ldt1.format(dtf));
        LocalDateTime ldt2 = LocalDateTime.of(LocalDateTime.now()
        	.with(ChronoField.DAY_OF_MONTH, 6).toLocalDate(), localTime);
        System.out.println("ldt2: " + ldt2.format(dtf));
}

控制台输出:
在这里插入图片描述
注意到这个枚举类:ChronoField 内置了一些常用的枚举值。

枚举值含义
NANO_OF_SECONDThe nano-of-second.
NANO_OF_DAYThe nano-of-day.
MICRO_OF_SECONDThe micro-of-second.
MICRO_OF_DAYThe micro-of-day.
MILLI_OF_SECONDThe milli-of-second.
MILLI_OF_DAYThe milli-of-day.
SECOND_OF_MINUTEThe second-of-minute.
SECOND_OF_DAYThe second-of-day.
MINUTE_OF_HOURThe minute-of-hour.
MINUTE_OF_DAYThe minute-of-day.
HOUR_OF_AMPMThe hour-of-am-pm.
CLOCK_HOUR_OF_AMPMThe clock-hour-of-am-pm.
HOUR_OF_DAYThe hour-of-day.
CLOCK_HOUR_OF_DAYThe clock-hour-of-day.
AMPM_OF_DAYThe am-pm-of-day.
DAY_OF_WEEKThe day-of-week, such as Tuesday.
ALIGNED_DAY_OF_WEEK_IN_MONTHThe aligned day-of-week within a month.
ALIGNED_DAY_OF_WEEK_IN_YEARThe aligned day-of-week within a year.
DAY_OF_MONTHThe day-of-month.
DAY_OF_YEARThe day-of-year.
EPOCH_DAYThe epoch-day, based on the Java epoch of 1970-01-01 (ISO).
ALIGNED_WEEK_OF_MONTHThe aligned week within a month.
ALIGNED_WEEK_OF_YEARThe aligned week within a year.
MONTH_OF_YEARThe month-of-year, such as March.

具体注释请看 java.time.temporal.ChronoField 源码。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值