我正在寻找一个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例程),并具有Monday = 1和特殊的星期考虑因素(例如2021-01-01),或更准确地说:

最佳答案

您需要的功能是:

StartOfAWeek(Year, Week, 1)


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

您对结果感到困惑

WeekOfTheYear(EncodeDate(2021,1,1))


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

10-05 22:27