gpt4 book ai didi

java - 如何计算Java中一个月中特定工作日的顺序(序数)数

转载 作者:行者123 更新时间:2023-12-02 08:40:24 27 4
gpt4 key购买 nike

我正在尝试用 Java 确定一个月中某个工作日的连续序号。即如果星期五是一个月的第一个或第三个星期五。

在阅读了我在 Java 日历上可以找到的所有内容和此处的帖子后,我找不到简单的方法。我能想到的一种方法是确定本月第一周在本月有多少天,然后根据相关日期调整 week_of_month。但是,它需要一些复杂的计算。谁知道一个简单的解决方案?

最佳答案

只需取一个月中的第几天,减去 1,除以 7,然后加 1。该月的前 7 天总是第一个(星期二、星期三...),无论哪一天该月的实际第一天是星期几。

我个人会使用 Joda Time:

public int getWeekOfWeekDay(LocalDate date) {
return ((date.getDayOfMonth() - 1) / 7) + 1;
}

...但是您可以使用 Calendar 并获取 Calendar.DAY_OF_MONTH 字段的值来执行相同的操作。

编辑:实际上,我刚刚注意到一个变化,java.util.Calendar 实际上比 Joda Time 更简单 - 它有一个特定的字段!您只需要:

int weekOfWeekDay = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);

来自 DAY_OF_WEEK_IN_MONTH 的文档:

Field number for get and set indicating the ordinal number of the day of the week within the current month. Together with the DAY_OF_WEEK field, this uniquely specifies a day within a month. Unlike WEEK_OF_MONTH and WEEK_OF_YEAR, this field's value does not depend on getFirstDayOfWeek() or getMinimalDaysInFirstWeek(). DAY_OF_MONTH 1 through 7 always correspond to DAY_OF_WEEK_IN_MONTH 1; 8 through 14 correspond to DAY_OF_WEEK_IN_MONTH 2, and so on.

我想我可能仍然使用 Joda Time 版本,因为它是一个更好的 API,但是如果你被迫使用日历,至少你可以一次做到这一点。

关于java - 如何计算Java中一个月中特定工作日的顺序(序数)数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com