gpt4 book ai didi

从具有自定义一周开始的日期计算一周的算法? (对于 iCal)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:26 26 4
gpt4 key购买 nike

我只能找到获得 ISO 8601 周的算法(周从星期一开始)。

然而,iCal规范说

A week is defined as a seven day period, starting on the day of theweek defined to be the week start (see WKST). Week number one of thecalendar year is the first week that contains at least four (4) daysin that calendar year.

因此,它比 ISO 8601 更复杂,因为一周的开始可以是一周中的任何一天。

是否有一种算法可以确定日期的周数,并具有自定义的一周开始日?

或者... iCal4j 中有函数吗?这样做吗?从日期确定星期几?

谢谢!

附注限制:我使用的 JVM 语言无法扩展 Java 类,但我可以调用 Java 方法或实例化 Java 类。

最佳答案

if (input_date < firstDateOfTheYear(WKST, year))
{
return ((isLeapYear(year-1))?53:52);
}
else
{
return ((dayOfYear(input_date) - firstDateOfTheYear(WKST, year).day)/7 + 1);
}

firstDateOfTheYear 返回给定星期开始 (WKST) 和年份的第一个日历日期,例如如果 WKST = 星期四,年份 = 2012,则返回 1 月 5 日。

dayOfYear 返回一年中的连续数字日,例如2 月 1 日 = 32

示例 #1:2012 年 1 月 18 日,一周的开始是星期一

  • dayOfYear(2012 年 1 月 18 日)= 18
  • firstDateOfTheYear(2012 年星期一)= 2012 年 1 月 2 日

(18 - 2)/7 + 1 = 3回答周数3

示例 #2:2012 年 1 月 18 日,星期四开始一周

  • dayOfYear(2012 年 1 月 18 日)= 18
  • firstDateOfTheYear(2012 年星期四)= 2012 年 1 月 5 日

(18 - 5)/7 + 1 = 2回答周数2

示例 #3:2012 年 1 月 1 日,一周的开始是星期一

  • firstDateOfTheYear(2012 年星期一)= 2012 年 1 月 2 日
  • IsLeapYear(2012-1) = false

2012 年 1 月 1 日 < 2012 年 1 月 2 日回答周数52

关于从具有自定义一周开始的日期计算一周的算法? (对于 iCal),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com