我正在寻找一个Delphi(10+)函数,它返回一个给定年份和周数的TDate:
function StartDate(2021, 53): TDate
应返回2021-01-01。
虽然WeekOfTheYear(EncodeDate(2021,1,1))
返回53(正确),但我无法反过来使用StartOfAWeek(2021,53, 1)
或StartOfAWeek(2021,53, 5)
(5 =周五) - 它无法识别为有效日期(=例外)。有什么建议吗?
编辑: 我正在寻找符合ISO 8601标准的函数(如内部Delphi例程),周一= 1和特殊周考虑(如2021-01-01),或者更精确:{{反之亦然'例程{{ 1}}
答案 0 :(得分:5)
您需要的功能是:
StartOfAWeek(Year, Week, 1)
您发现StartOfAWeek(2021, 53, 1)
引发了异常。这是正确的,因为2021
没有53周。它只有52周。第52周结束于2021年的最后一天。
您对
的结果感到困惑WeekOfTheYear(EncodeDate(2021,1,1))
这会返回53,但因为日期是年初,所以这是2020年的第53周。