使用Delphi查找给定周和年的开始

时间:2018-03-08 11:52:16

标签: delphi

我正在寻找一个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}}

1 个答案:

答案 0 :(得分:5)

您需要的功能是:

StartOfAWeek(Year, Week, 1)

您发现StartOfAWeek(2021, 53, 1)引发了异常。这是正确的,因为2021没有53周。它只有52周。第52周结束于2021年的最后一天。

您对

的结果感到困惑
WeekOfTheYear(EncodeDate(2021,1,1))

这会返回53,但因为日期是年初,所以这是2020年的第53周。