Word 字段代码无法计算少于 17 天的日期

Word 字段代码无法计算少于 17 天的日期

我抓取了一些代码添加到 Word 中,用于计算从今天的日期开始 X 天后的日期:

{QUOTE
{SET Delay 17}
{SET a{=INT((14-{DATE \@ M})/12)}}
{SET b{={DATE \@ yyyy}+4800-a}}
{SET c{={DATE \@ M}+12*a-3}}
{SET d{DATE \@ d}}
{SET jd{=d+INT((153*c+2)/5)+365*b+INT(b/4)-INT(b/100)+INT(b/400)-32045+Delay}}
{SET e{=INT((4*(jd+32044)+3)/146097)}}
{SET f{=jd+32044-INT(146097*e/4)}} 
{SET g{=INT((4*f+3)/1461)}}
{SET h{=f-INT(1461*g/4)}}
{SET i{=INT((5*h+2)/153)}}
{SET dd{=h-INT((153*i+2)/5)+1}}
{SET mm{=i+3-12*INT(i/10)}}
{SET yy{=100*e+g-4800+INT(i/10)}}
"{dd}-{mm}-{yy}" \@ "MMMM d, yyyy”}

代码运行正常,除非延迟时间在 6 到 16 天之间。因此,今天,即 2021 年 12 月 27 日,延迟 5 天可得到 2022 年 1 月 1 日,但延迟 6 天可得到 2022 年 2 月 6 日。同样,延迟 16 天可得到 2022 年 12 月 1 日,而延迟 17 天可得到 2022 年 1 月 13 日。

不幸的是,我专门寻找这段代码来生成一个计算 14 天的字段,所以这段代码虽然令人印象深刻,但最终却毫无用处。

有人能帮我弄清楚如何让这个东西踢出正确的日期吗?

答案1

Word MVP Paul Edstein 不久前撰写了有关字段中日期计算的权威参考。我建议下载他的日期计算教程。请务必查看介绍性材料。他的字段位于教程的第 8 页。(阅读介绍材料后才可使用!)

{QUOTE{SET 延迟 14}{SET a{=INT((14-{DATE @ M})/12)}}{SET b{={DATE @ yyyy}+4800-a}}{SET c{={DATE @ M}+12a-3}}{设置 d{日期@d}}{设置 jd{=d+INT((153c+2)/5)+365b+INT(b/4)-INT(b/100)+INT(b/400)-32045+延迟}}{SET e{=INT((4(jd+32044)+3)/146097)}}{SET f{=jd+32044-INT(146097e/4)}}{设置g{=INT((4f+3)/1461)}}{设置h{=f-INT(1461g/4)}}{SET i{=INT((5h+2)/153)}}{设置dd{=h-INT((153i+2)/5)+1}}{设置mm{=i+3-12INT(i/10)}}{SET yy{=100*e+g-4800+INT(i/10)}}"{mm}-{dd}-{yy}" @ "dddd, d MMMM yyyy"}

几十年来,Paul 的田地已经为数千名用户服务。本教程是一个 Word 文档,您可以下载。您可以将工作田地直接复制到您的文档中。

这是我的日期计算页面。显示内容如下:

{ QUOTE "{ SET " 延迟" "14" } { SET "DaysInMonth" { IF { CreateDate @ "MM" } <> 2 { = ROUND(30.575*{ CreateDate @ "MM" },0)- ROUND(30.575*{ = { CreateDate @ "MM" } -1 },0) } { IF { = MOD( { CreateDate @"yy" } , 4 ) } > 0 "28" "29" } } } { SET "NextMonth" { IF { CreateDate @ "MM" } = 12 "1/97" "{ = { CreateDate @ "MM" } + 1 }/97 } } { IF { = { REF "延迟" } + { CreateDate @ "dd" } } <= { REF"DaysInMonth" } { CreateDate @ "MMMM { = { REF "延迟" } + { CreateDate @ "dd" } }, yyyy"}{ QUOTE { NextMonth @ "MMMM" } { = { REF "延迟" } + { CreateDate @ "dd" } - { REF"DaysInMonth" } }, { IF { CreateDate @ "MM" } <> 12 { CreateDate @ "yyyy" } { CreateDate @ "{ = 1 + { CreateDate @ "yyyy" } # "xxxx" }" } } } }" }

在处理互联网上发布的字段时,我使用Word MVP Graham Mayor 插件用于将字段代码转换为文本并转回

这是我在 Microsoft 网站上发表的有关处理 Word 中的字段的文章。它有额外的资源链接。

相关内容