在 Java 中获取一年中的所有双周日期

我想计算一年的双周日期。所以我每个月应该有 2 次约会。


到目前为止我已经厌倦了-


private static void getAllBiWeeks() {


        int lastYear = java.time.Year.now().getValue() - 1;

        int currentYear = java.time.Year.now().getValue();

        int nextYear = java.time.Year.now().getValue() + 1;


        System.out.println("lastYear - " + lastYear);

        System.out.println("currentYear - " + currentYear);

        System.out.println("nextYear - " + nextYear);


        LocalDate lastYearDate = LocalDate.of(lastYear, 12, 01);

        LocalDate currentYearFirstDate = LocalDate.of(currentYear, 01, 01);

        LocalDate currentYearLastDate = LocalDate.of(currentYear, 12, 31);

        LocalDate nextYearFirstDate = LocalDate.of(nextYear, 01, 01);


        System.out.println("lastYearDate - " + lastYearDate);

        System.out.println("currentYearFirstDate - " + currentYearFirstDate);

        System.out.println("nextYearFirstDate - " + nextYearFirstDate);


        LocalDate lastYearLastDate = LocalDate.of(lastYear, 12, 31);

        LocalDate lastYearLast15Days = lastYearLastDate.minusWeeks(2);


        System.out.println("lastYearLast15Days - " + lastYearLast15Days);


        System.out.println(lastYearLast15Days.isBefore(nextYearFirstDate));


        for (LocalDate date = currentYearFirstDate; date.isBefore(currentYearLastDate); date = date.plusWeeks(2)) {

            System.out.println(date);

        }

    }

但它没有给出正确的日期,它给出了以下输出 -


lastYear - 2018

currentYear - 2019

nextYear - 2020

lastYearDate - 2018-12-01

currentYearFirstDate - 2019-01-01

nextYearFirstDate - 2020-01-01

lastYearLast15Days - 2018-12-17

true

2019-01-01

2019-01-15

2019-01-29

2019-02-12

2019-02-26

2019-03-12

2019-03-26

2019-04-09

2019-04-23

2019-05-07

2019-05-21

2019-06-04

2019-06-18

2019-07-02

2019-07-16

2019-07-30

2019-08-13

2019-08-27

2019-09-10

2019-09-24

2019-10-08

2019-10-22

2019-11-05

2019-11-19

2019-12-03

2019-12-17

我怎样才能得到这样的日期 -


2019-01-01

2019-01-16

2019-02-01

2019-02-16

.

.


PIPIONE
浏览 282回答 3
3回答

HUWWW

我想计算一年的双周日期。所以我每个月应该有 2 次约会。不,不一定。一年有 52 周(加上一点),但只有 12 个月。双周 - 每隔一周 - 每年会给你 26 或 27 个日期,而“每月 2 个日期”会给你每年 24 个日期。如果您想要一年中每个月的第 1 和第 16(不是第 15?),我建议您循环执行此操作:for (int month = 1; month <= 12; month++) {&nbsp; &nbsp; System.out.println(LocalDate.of(year, month, 1);&nbsp; &nbsp; System.out.println(LocalDate.of(year, month, 16);}听起来这将为您提供您正在寻找的输出 - 但您应该意识到这不是大多数人所理解的“双周刊”。

炎炎设计

您可以使用lastDayOfMonth()方法 from TemporalAdjusters。例子:import java.time.LocalDate;import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;public class NewClass2 {&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; LocalDate currentYearFirstDate =&nbsp; LocalDate.of(2019, 01, 01);&nbsp; &nbsp; &nbsp; &nbsp; LocalDate currentYearLastDate&nbsp; =&nbsp; LocalDate.of(2019, 12, 31);&nbsp; &nbsp; &nbsp; &nbsp; for (LocalDate date = currentYearFirstDate; date.isBefore(currentYearLastDate);date = date.plusMonths(1)) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LocalDate firstHalfStart = date;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LocalDate firstHalfEnd&nbsp; &nbsp;= date.plusDays(14);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LocalDate secondHalfStart = date.plusDays(15);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LocalDate secondHalfEnd&nbsp; &nbsp;= date.with(lastDayOfMonth());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(firstHalfStart + " to " + firstHalfEnd + " , " + secondHalfStart + " to " + secondHalfEnd);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}

墨色风雨

对于将来有相同要求的其他人-使用这个for (int month = 1; month <= 12; month++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int lastDayOfMonth = YearMonth.of(currentYear, month).lengthOfMonth();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(LocalDate.of(currentYear, month, 1)+" To "+LocalDate.of(currentYear, month, 15)+" , "+LocalDate.of(currentYear, month, 16)+" To "+LocalDate.of(currentYear, month, lastDayOfMonth));}我得到了我需要的——2019-01-01 To 2019-01-15 , 2019-01-16 To 2019-01-312019-02-01 To 2019-02-15 , 2019-02-16 To 2019-02-282019-03-01 To 2019-03-15 , 2019-03-16 To 2019-03-312019-04-01 To 2019-04-15 , 2019-04-16 To 2019-04-302019-05-01 To 2019-05-15 , 2019-05-16 To 2019-05-312019-06-01 To 2019-06-15 , 2019-06-16 To 2019-06-302019-07-01 To 2019-07-15 , 2019-07-16 To 2019-07-312019-08-01 To 2019-08-15 , 2019-08-16 To 2019-08-312019-09-01 To 2019-09-15 , 2019-09-16 To 2019-09-302019-10-01 To 2019-10-15 , 2019-10-16 To 2019-10-312019-11-01 To 2019-11-15 , 2019-11-16 To 2019-11-302019-12-01 To 2019-12-15 , 2019-12-16 To 2019-12-31
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java