我只找到了Joda Time的解决方案。
仅当最后一天不在第一周时,我的解决方案才有效:
LocalDate.now() // or any other LocalDate
.withDayOfMonth(31)
.withMonth(12)
.get(weekFields.weekOfWeekBasedYear())
那么在Java Time中(例如在Joda Time中)正确的方法是什么?
可使用java.time.*
API 直接获得此信息。
关键方法已rangeRefinedBy(Temporal)
启用TemporalField
。它允许您获得一个ValueRange
为字段提供最小值和最大值的对象,并通过传入的时间对象对其进行优化。
要了解一年中有多少ISO周,请执行以下操作:
LocalDate date = LocalDate.of(2015, 6, 1);
long weeksInYear = IsoFields.WEEK_OF_WEEK_BASED_YEAR.rangeRefinedBy(date).getMaximum();
System.out.println(weeksInYear);
请注意,您传递的日期用于确定答案。因此,在传递1月初或12月下旬的日期时,请确保您了解基于ISO周的日历的工作原理,以及日历年与周年之间的差异。
问题内容: 如何通过Joda-Time获得特定年份的最大周数? 问题答案: @cody评论 两种方法之间的区别 .withWeekOfWeekyear()和.withWeekyear() 例
问题内容: 如何知道特定年份的特定月份有多少天? 问题答案: Java 8及更高版本 @沃伦·诺科斯(Warren M. 如果你尝试使用Java 8的新Date and Time API,则可以使用java.time.YearMonthclass。请参阅Oracle教程。 测试:尝试a年的一个月: Java 7及更早版本 创建日历,设置年份和月份并使用 getActualMaximum 测试:尝试
问题内容: Java 8的类有一个方法,,它使您可以从字符串A-z,a-z字母定义格式。这些例子并没有明确的区别y,今年的时代和Y,以星期为一年。它是什么? 问题答案: 与2006-W52一样,这是“年-周”样式日期的年值。如果有问题的一周跨越年份边界,则可能偏离年份值+1或-1。
我试图只得到今年的数据,但我的“where子句”似乎有问题。但当我在where子句中输入特定年份时,它就起作用了。除了where子句之外,所有的东西都在工作。 我希望你们能帮我。
问题内容: 我正在使用JavaScript类,并尝试使用方法获取当前日期。但显然是加载系统日期和时间。我正在从印度运行代码,但我想使用相同的方法来获取英国的日期和时间。我怎样才能做到这一点? 问题答案: 如果您知道UTC偏移量,则可以使用以下函数传递它并获取时间:
问题内容: 我想获得任何一年中的周数。即使被接受为全球通用的答案,对于日历,而实际上有几个星期。 有什么方法可以计算出来,或者有什么函数可以帮助我? 问题答案: 根据维基百科关于ISO周日期格式的文章,您可以使用以下代码进行计算。 更新: 似乎来自@Samuel的答案更好,并且没有Luca提到的错误 快速一线: