【发布时间】:2012-01-25 08:50:24
【问题描述】:
我只能找到获得 ISO 8601 周的算法(周从星期一开始)。
但是,iCal 规范说
一周定义为 7 天,从 week 定义为一周的开始(参见 WKST)。第一周 日历年是包含至少四 (4) 天的第一周 在那个日历年。
因此,它比 ISO 8601 更复杂,因为一周的开始可以是一周中的任何一天。
是否有一种算法可以确定日期的周数,并具有自定义的一周开始日期?
或者...iCal4j 中有这样的功能吗?根据日期确定星期几?
谢谢!
附言限制:我使用的 JVM 语言无法扩展 Java 类,但我可以调用 Java 方法或实例化 Java 类。
【问题讨论】:
-
我认为 jodatime 不是一种选择,就像滥用 java.util.Calendar 一样?
-
根据该链接,iCal 周数的定义方式与 ISO8601 周数相同。看起来你开车的问题在这里处理:stackoverflow.com/q/1801907/93922
-
@TetsujinoOni 不是真的。 iCal 使用 WKST 变量来定义哪一天是一周的开始。虽然默认是星期一,就像 ISO8601 一样,但它可以是一周中的任何一天。
-
更详细地查看 JodaTime 我认为使用您的 WKST 设置自定义年表以重新设置基准,并结合 weekyear() 和 weekOfWeekyear() 将让您到达目的地。
-
@TetsujinnoOni 我看了
org.joda.time.chrono.ISOChronology,但我不能轻易地“重新设置”它。我想我仍然需要编写一个扩展org.joda.time.chrono.BaseChronology的新对象,但我无法编写新对象,因为我使用的 JVM 语言不允许我编写新类。
标签: algorithm calendar icalendar week-number ical4j