win*_*ime 2 java datetime ordinal
我试图确定Java中一个月中工作日的序数序数.即如果星期五是一个月的第一个或第三个星期五.
在阅读了我在Java Calendar上发现的所有内容并在这里发帖后,我找不到一个简单的方法.我能想到的一种方法是确定本月第一周有多少天,然后根据相关日期的哪一天调整week_of_month.但是,它需要一些复杂的计算.谁知道一个简单的解决方案
只需取一个月中的一天,减去1,除以7,然后加1.本月的前七天始终是第一个(周二,周三......)一周中的任何一天,实际的第一个月是.
就个人而言,我会使用Joda Time:
public int getWeekOfWeekDay(LocalDate date) {
return ((date.getDayOfMonth() - 1) / 7) + 1;
}
Run Code Online (Sandbox Code Playgroud)
...但你可以使用Calendar和获取Calendar.DAY_OF_MONTH字段的值来做同样的事情.
编辑:实际上,我刚刚注意到,为了改变,java.util.Calendar实际上比Joda Time更简单 - 它有一个特定的领域!所有你需要的是:
int weekOfWeekDay = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
Run Code Online (Sandbox Code Playgroud)
来自以下文档DAY_OF_WEEK_IN_MONTH:
get和set的字段编号,表示当前月份中某一天的序号.与DAY_OF_WEEK字段一起,这唯一地指定一个月内的一天.与WEEK_OF_MONTH和WEEK_OF_YEAR不同,此字段的值不依赖于getFirstDayOfWeek()或getMinimalDaysInFirstWeek().DAY_OF_MONTH 1到7始终对应于DAY_OF_WEEK_IN_MONTH 1; 8到14对应于DAY_OF_WEEK_IN_MONTH 2,依此类推.
我想我可能仍然会使用Joda Time版本,因为它只是一个更好的API,但如果你被迫使用Calendar,至少你可以一次性完成.
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |