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