如何在Java中查找一个月的最后一个工作日
如何在Java中找到一个月的最后一个工作日。如果一个月的最后一天是周六或周日,那么最后一个工作日应该是周五。例如,如果3月31日是星期日,则最后一个工作日是3月29日星期五 用于获取当前月份如何在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
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() );