在JAVA中查找重复工作日直到特定日期

时间:2016-03-09 05:09:00

标签: java date time calendar

我刚开始学习Java,而且我遇到了非常困难的时候,与C相比,它看起来似乎很复杂。 我必须编写一个程序来检测当周的当天,然后找到所有剩余的相同日期直到特定日期。它必须按月打印出来。所以现在就说它的2016/3/9,即周三。具体日期是2016/4/8。它应该打印出来: 2016/3:16,23,30 2016/4:6

我应该使用java.util.date和java.util.calendar等。谢谢你的回答。

1 个答案:

答案 0 :(得分:4)

避免使用java.util.Date/.Calendar

仅供参考,java.util.Date /。Calendar类可怕。善意的,他们的设计很差,令人困惑,也很麻烦。因此,不要通过这些类判断Java或您的学习。实际上,完全避免使用这些类。

java.time

旧的类太糟糕了,Sun / Oracle放弃了它们,用java.time框架中的新类取代它们。 java.time框架内置于Java 8及更高版本中。请参阅Tutorial

LocalDate class

您希望LocalDate类代表仅限日期而没有时间和没有时区。

您可以通过解析字符串或指定年,月和日的数字来实例化LocalDate

LocalDate localDate = LocalDate.parse( "2016-04-08" );
LocalDate localDate = LocalDate.of( 2016 , 4 , 8 );

今天

请注意,即使结果LocalDate在内部没有存储时区,确定'今天'也需要时区。对于任何特定时刻,日期可能因时区而异。巴黎的新日早些时候比蒙特利尔更新。

LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) );

添加周数

添加一周以获得具有相同星期几的下一个日期。

LocalDate next = today.plusWeeks( 1 );

比较LocalDate

LocalDate个对象与isBeforeisAfterisEqual方法进行比较。

我会让你把它们放在一起完成你的家庭作业。

此外,您可以向LocalDate询问DayOfWeek个对象。该对象具有方便的方法,例如getDisplayName,用于星期几的本地化名称。