Salesforce:如何使用apex代码或公式在日期字段(检查第53周)中获取周数

Salesforce:如何使用apex代码或公式在日期字段(检查第53周)中获取周数,salesforce,formula,apex,week-number,Salesforce,Formula,Apex,Week Number,需要在日期字段中获取正确的周数。有些日期有53周(您可以在此处参考:) 顶点: Datetime dt=Datetime.newInstanceGmt(2020,12,28)//2020年12月28日 整数周=整数.valueOf(dt.formatGmt('w')); 系统调试('周数为'+周); 这将返回: USER_DEBUG[3]| DEBUG |周数为1 但应该是第53周 我们还发现了这个公式: FLOOR((测试日期)→c-date(年份)(测试日期)→c+(MOD(8-MOD(测

需要在日期字段中获取正确的周数。有些日期有53周(您可以在此处参考:)

顶点:

Datetime dt=Datetime.newInstanceGmt(2020,12,28)//2020年12月28日
整数周=整数.valueOf(dt.formatGmt('w'));
系统调试('周数为'+周);

这将返回:
USER_DEBUG[3]| DEBUG |周数为1

但应该是第53周

我们还发现了这个公式:

FLOOR((测试日期)→c-date(年份)(测试日期)→c+(MOD(8-MOD(测试日期)→c-date(1900,1,7),7)+1,7)-3)),1,1)+MOD(MOD(日期)(年份)(测试日期)→c+(MOD(8-MOD(测试日期)→c-date(1900,1,7),7)-3),1-date(1900,1,7),7)+1)/7+1)

似乎是正确的,但有时它返回0或53,所以我只是设置了一些条件,如果0然后设置为53,但我发现在这个日期这是错误的:
2025年12月29日它返回第53周,但应该是第1周。

这个公式对我有用试试这个。希望你得到解决方案

MOD(FLOOR( ( Expected_Launch_Date__c - DATE(2006,01,01)-6)/7),52)+1
每次都是这样

FLOOR(
(DATEVALUE(Your_date_field) -
DATE(YEAR(DATEVALUE(Your_date_field) -
WEEKDAY(DATEVALUE(Your_date_field)-1)+4),1,3)+

WEEKDAY(DATE(YEAR(DATEVALUE(Your_date_field) -
WEEKDAY(DATEVALUE(Your_date_field)-1)+4),1,3))+5)/7
)
试试这个:


MOD(FLOOR((DATEVALUE(FIELD)-DATE(2012,01,01))/7),52)

Hi Praveen,我试过了,但似乎返回了错误的周数。2020年12月28日返回第2周,但应为第53周