java - 如何在Java中找到今天之前3个月的开始时间?

标签 java date

final Calendar tentativeStartDate =  Calendar.getInstance();
    tentativeStartDate.set(Calendar.MILLISECOND, 0);
    tentativeStartDate.set(Calendar.SECOND, 0);
    tentativeStartDate.set(Calendar.MINUTE, 0);
    tentativeStartDate.set(Calendar.HOUR, 0);
    tentativeStartDate.set(Calendar.DATE, 1);
    tentativeStartDate.add(Calendar.MONTH, -3);

我想要从当前月份之前的 3 个月开始。例如,如果今天是 6 月 18 日,我想要 4 月 1 日午夜 0 分/秒。 [ 4 月 1 日 00:00:00 ]

但是这个逻辑并没有给我正确的答案。 Java 中有更好/不同的方法吗?

最佳答案

使用 Java 8,您可以使用如下流畅的习惯用法:

分区

ZonedDateTime.now([your zone ID, e.g. ZoneId.systemDefault()])
    // month offset
    .minusMonths(2)
    // start at day 1
    .withDayOfMonth(1)
    // change time-of-day to when the day starts
    .truncatedTo(ChronoUnit.DAYS)

本地

LocalDate.now([your zone ID, e.g. ZoneId.systemDefault()])
    .minusMonths(2)
    .withDayOfMonth(1)

注意

因为您想要四月,所以我将月份偏移量设置为 2

关于java - 如何在Java中找到今天之前3个月的开始时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50911327/

相关文章:

java - Selenium 3.3.1 : NoDefClassFound (com. google.common.base.Function)

java - 如何使 charAt() 返回一个可以填充数组的数字?

jquery - Datepicker 仅适用于两位数的输入

mysql - 将 CURDATE() 的日期值与完整时间戳字段进行比较

java - 通过解析输入将日期添加到现在

java - 由 : org. hibernate.MappingException : Unknown entity: New Object. JTA 引起

java - pdf 文件无法从 ubuntu 16.04 的 jar 中打开

mysql - 在用户定义的函数(mysql)中格式化日期

php - 在 MySQL 中从 DOB 获取年龄

java - 从 Android NDK SIGSEGV 调用 Java 方法