首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取一个月中的第几个工作日

如何获取一个月中的第几个工作日
EN

Stack Overflow用户
提问于 2010-11-09 16:06:21
回答 4查看 4.3K关注 0票数 1

您好,我想在java中做一个程序,其中days,weekNo是参数..Like,每月的第一个星期五或第二个星期一,..and,它返回日期

EN

Stack Overflow用户

发布于 2017-02-01 05:33:45

tl;dr

代码语言:javascript
运行
复制
LocalDate firstFridayThisMonth =
    LocalDate.now( ZoneId.of( "America/Montreal" ) )
             .with( TemporalAdjusters.firstInMonth( DayOfWeek.FRIDAY ) )

使用java.time

其他的答案现在已经过时了。麻烦的旧date-time类(DateCalendar等)现在被java.time类取代的是legacy

LocalDate

LocalDate类表示不带时间和时区的仅日期值。

在确定日期时,时区至关重要。在任何给定的时刻,全球各地的日期都会因地区而异。例如,午夜过后的几分钟在Paris France中是新的一天,而在Montréal Québec中仍然是“昨天”。

指定continent/region格式的proper time zone name,如America/MontrealAfrica/CasablancaPacific/Auckland。切勿使用3-4个字母的缩写,例如ESTIST,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。

代码语言:javascript
运行
复制
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

TemporalAdjuster

TemporalAdjuster接口提供了对日期-时间值的操作。java.time类使用不可变对象,因此结果总是一个新的新对象,其值基于原始对象。

TemporalAdjusters类(注意复数名称)提供了几个方便的实现。其中包括:firstInMonth()lastInMonth()dayOfWeekInMonth()。所有这些都带有一个DayOfWeek枚举对象的参数。

代码语言:javascript
运行
复制
LocalDate firstFridayOfThisMonth = 
    today.with(
        TemporalAdjusters.firstInMonth( DayOfWeek.FRIDAY ) 
    )
;

…和…

代码语言:javascript
运行
复制
LocalDate secondMondayOfThisMonth = 
    today.with(
        TemporalAdjusters.dayOfWeekInMonth( 2 , DayOfWeek.MONDAY ) 
    )
;

…和…

代码语言:javascript
运行
复制
LocalDate thirdWednesdayOfNextMonth = 
    today.plusMonths( 1 )
         .with(  
             TemporalAdjusters.dayOfWeekInMonth( 3 , DayOfWeek.WEDNESDAY )  
         )
;

关于java.time

java.time框架内置于Java8和更高版本中。这些类取代了麻烦的旧legacy日期时间类,如java.util.DateCalendarSimpleDateFormat

现在在maintenance mode中的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参阅Oracle Tutorial。和搜索堆栈溢出,以获得许多示例和解释。规范为JSR 310

从哪里获取java.time类?

  • 和以及后来的
    • 内置。与implementation.
    • Java 9捆绑在一起的标准Java API的
    • 部分添加了一些次要功能和fixes.

  • 和.

中的

  • 许多java.time功能已向后移植到Java6和7

适用于安卓specifically.

  • See .

    • 项目适配ThreeTen-Backport (如上所述

ThreeTen-Extra项目使用额外的类扩展了java.time。这个项目是未来可能添加到java.time中的试验场。您可能会在这里找到一些有用的类,如IntervalYearWeekYearQuartermore

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4131558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档