簡體   English   中英

如何在Java中找到從今天開始的3個月的開始?

[英]How to find start of 3 months before today in Java?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM