Java 日期处理
给定一个 java.util.Date 实例,它是星期日。如果该月有 4 个星期日,我需要弄清楚所选日期是否为该
- 月的第 1
- 个星期日、该月的第 2 个星期日、该
- 月的最后一个星期日、
- 该月的最后一个星期日
如果该月有 5 个星期日,则我需要弄清楚所选日期是否是
- 该月的第一个星期日
- 该月的第二个
- 星期日 该月的第三
- 个星期日 该月的第二个最后一个星期日
- 该月的最后一个星期日
我在JodaTime中查看过,但还没有找到相关功能。该项目实际上是一个 Groovy 项目,所以我可以使用 Java 或 Groovy 来解决这个问题。
谢谢, 多纳尔
Given an instance of java.util.Date
which is a Sunday. If there are 4 Sundays in the month in question, I need to figure out whether the chosen date is
- 1st Sunday of month
- 2nd Sunday of month
- 2nd last Sunday of month
- Last Sunday of month
If there are 5 Sundays in the month in question, then I need to figure out whether the chosen date is
- 1st Sunday of month
- 2nd Sunday of month
- 3rd Sunday of month
- 2nd last Sunday of month
- Last Sunday of month
I've had a look in JodaTime, but haven't found the relevant functionality there yet. The project is actually a Groovy project, so I could use either Java or Groovy to solve this.
Thanks,
Donal
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
到目前为止给出的解决方案将告诉您第一、第二、第三、第四或第五。但问题说他想知道“最后”和“倒数第二”。如果提问者确实需要知道“最后”等,那么就会有一点额外的复杂性。您必须计算出该月中有多少个星期日才能知道第四个星期日是否是最后一个。我想到的第一个方法是:
这似乎是一项相当多的工作。有人看到更简单的方法吗?
Solutions given so far will tell you 1st, 2nd, 3rd, 4th, or 5th. But the question said he wanted to know "last" and "second to last". If the questioner really needs to know "last" etc, there's a little extra complexity. You have to figure out how many Sundays are in the month to know whether or not the 4th Sunday is the last. The first way to figure that out that occurs to me is:
That seems like rather a lot of work. Anybody see an easier way?
DAY_OF_WEEK_IN_MONTH
DAY_OF_WEEK_IN_MONTH
更多编辑
好的,考虑到杰伊的评论,让我们尝试一下这个:
而
daysInMonth
的计算如下:...或以其他方式计算。
MORE EDIT
Okay, taking Jay's comment in consideration, let's try this one:
whereas
daysInMonth
is calculated as follows:... or in some other way.
int 月份星期日 = 月份日 / 7 + 1;
int sundayOfMonth = dayOfMonth / 7 + 1;
您可以使用 java.util.Calendar< /a> 进行日期计算:
另外,不要假设 Calendar 对象一个月中只有五周。例如,2010 年 5 月 1 日的最大周数为 6。
You can just use java.util.Calendar to do your date calculations:
Also, do not assume that there are only five weeks in a month with the Calendar object. For instance, the maximum weeks of 05/01/2010 would be 6.
编辑:这是我的最终版本:
EDIT: Here's my final version: