如何在Java中查找一个月的最后一个工作日

如何在Java中查找一个月的最后一个工作日,java,android,Java,Android,如何在Java中找到一个月的最后一个工作日。如果一个月的最后一天是周六或周日,那么最后一个工作日应该是周五。例如,如果3月31日是星期日,则最后一个工作日是3月29日星期五 用于获取当前月份 Date today = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(today); calendar.add(Calendar.MONTH, 1); 试试这个 Date today = new Date

如何在Java中找到一个月的最后一个工作日。如果一个月的最后一天是周六或周日,那么最后一个工作日应该是周五。例如,如果3月31日是星期日,则最后一个工作日是3月29日星期五

用于获取当前月份

Date today = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.add(Calendar.MONTH, 1);
试试这个

Date today = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(today);

calendar.add(Calendar.MONTH, 1);//Used for finding next month
calendar.set(Calendar.DAY_OF_MONTH, 1);//Setting the Day of month as 1 for starting    
do{
       calendar.add(Calendar.DATE, -1); //In the first case decease day by 1 so get the this months last day
   } while (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY
           || calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ); // Checking whether the last day is saturday or sunday then it will decrease by 1
    Date lastDayOfMonth = calendar.getTime();
    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println("Today: " + sdf.format(today));
    System.out.println("Last Day of Month: " +df.format(lastDayOfMonth));
tl;博士 避免遗留类 您使用的是麻烦的旧日期时间类,现在是遗留类,被java.time类取代

使用java.time 该类表示一个仅限日期的值,不包含一天中的时间和时区

时区对于确定日期至关重要。在任何一个特定的时刻,世界各地的日期都因地区而异。例如,中午夜后几分钟是新的一天,而中仍然是“昨天”

大陆/地区
的格式指定,例如,或
太平洋/奥克兰
。切勿使用3-4个字母的缩写,如
EST
IST
,因为它们不是真正的时区,也不是标准化的,甚至不是唯一的(!)

该界面提供了一种调整日期时间值的方法。该类(注意复数
s
)提供了几个方便的实现

LocalDate endOfMonth = today.with( TemporalAdjusters.lastDayOfMonth() );
该项目通过附加功能扩展了java.time。这包括更多的
TemporalAdjuster
实现。其中之一就是跳过周六和周日。要使用它,我们需要跨越月底,因为这一天本身可能是一个工作日

LocalDate previousWorkingDay = endOfMonth.plusDays( 1 ).with( org.threeten.extra.Temporals.previousWorkingDay() );

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • 后来
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门为Android采用了ThreeTen Backport(如上所述)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。你可以在这里找到一些有用的课程,如、、和。

你的代码在哪里你有没有检查过初学者提示:A)你是一个初学者-你梦想问的所有问题都被问到了。在这里已经许多的时代。下次请做些调查。B) 即使你会做一些研究:这不是“我们为你编写代码服务”。您向我们展示您编写的代码,并指出哪些代码不起作用。所以,请:多花点时间在这里,学习这里的工作原理。@KishanCS补充道code@Piyush检查了它,但没有得到答案,麻烦的旧日期时间类,如,和
java.text.SimpleTextFormat
现在被这些类取代了。
LocalDate endOfMonth = today.with( TemporalAdjusters.lastDayOfMonth() );
LocalDate previousWorkingDay = endOfMonth.plusDays( 1 ).with( org.threeten.extra.Temporals.previousWorkingDay() );