Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中计算一个月内特定工作日的顺序(序数)数_Java_Datetime_Ordinal - Fatal编程技术网

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

如何在Java中计算一个月内特定工作日的顺序(序数)数,java,datetime,ordinal,Java,Datetime,Ordinal,我试图用Java确定一个月内一个工作日的顺序序号。i、 如果星期五是一个月的第一个或第三个星期五 在阅读了Java日历和这里的帖子之后,我找不到一个简单的方法。我能想到的一种方法是确定本月的第一周在本月有多少天,然后根据当天的日期调整本月的第周。然而,它需要一点复杂的计算。有人知道一个简单的解决方法吗?只需取月日,减去1,除以7,然后加1。一个月的前七天总是第一天(星期二、星期三……),无论一周中的哪一天是一个月的实际第一天 就我个人而言,我会利用乔达的时间: public int getWee

我试图用Java确定一个月内一个工作日的顺序序号。i、 如果星期五是一个月的第一个或第三个星期五


在阅读了Java日历和这里的帖子之后,我找不到一个简单的方法。我能想到的一种方法是确定本月的第一周在本月有多少天,然后根据当天的日期调整本月的第周。然而,它需要一点复杂的计算。有人知道一个简单的解决方法吗?

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

就我个人而言,我会利用乔达的时间:

public int getWeekOfWeekDay(LocalDate date) {
    return ((date.getDayOfMonth() - 1) / 7) + 1;
}
。。。但是您可以使用
日历
并获取
日历.DAY\u of\u MONTH
字段的值来执行相同的操作

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

int weekOfWeekDay = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
从以下文件:

get和set的字段号,指示当前月份内一周中某一天的序号。与“周中的天”字段一起,它唯一地指定一个月内的一天。与月的周和年的周不同,此字段的值不依赖于getFirstDayOfWeek()或getMinimalDaysInFirstWeek()。第1个月到第7个月的第1天始终与第1个月的第1周的第1天相对应;8到14对应于第2个月的第1周的第2天,依此类推

我想我可能仍然会使用Joda Time版本,因为它只是一个更好的API,但是如果您被迫使用
日历
,至少您可以一次性完成