为什么 @Month 在视图列中返回日期以填充 LotusScript 中的日期/时间字段?

问题描述 投票:0回答:3

我正在使用 LotusScript 填充 Lotus Notes 文档中的日期/时间字段。这是我正在使用的代码:

Dim dtItem As NotesItem
Set dtItem = endorsementDoc.GetFirstItem("EndorsementEffectedDate")
Dim paymentDue As NotesDateTime
Set paymentDue = dtItem.DateTimeValue
Call paymentDue.AdjustDay(45)
idoc.PaymentDue = paymentDue.DateOnly

EndorsementEffectedDate 字段是由用户填充的日期/时间字段。我想将 PaymentDue 字段设置为 EndorsementEffectedDate 之后的 45 天。为此,我使用了 NotesDateTime 类的 AdjustDay 方法。

问题是,当我将 PaymentDue 设置为 paymentDue.DateOnly 时,@Month 公式返回月份中的日期而不是月份本身。例如,如果 EndorsementEffectedDate 是 20/04/2023 并且我添加了 45 天,则 PaymentDue 设置为 04/06/2023 但 @Month(PaymentDue) 返回 4.

月份的列公式为

@Month(@TextToTime(@Text(PaymentDue))) 

为什么@Month 返回的是日期而不是月份?如何在 LotusScript 中获得正确的月份值?

我检查了 Windows 服务器的日期/时间设置,它们设置正确。

我还尝试使用 Format 函数以“dd/mm/yyyy”格式明确制作日期,但问题仍然存在。

date datetime view lotus-domino lotusscript
3个回答
0
投票

您显示的 lotusscript 代码运行后,是否保存文档?

例如

Call endorsementDoc.save(false, false)

如果你是,那么我认为你的视图列可能已损坏。尝试删除它并使用相同的公式创建一个新列。


0
投票

@Month 返回真正的月份。但是在以下情况下,您必须检查您在字段中输入的日期格式:

idoc.PaymentDue = paymentDue.DateOnly

您的日期格式(可能)是 MM/DD/YYYY:例如 04/20/2023。加上 45 天后为 06/04/2023。

@Month 根据你的区域设置,返回04。 不要将您的 PaymentDue 存储为字符串,而是存储为真实的日期时间:

idoc.PaymentDue = paymentDue.LSLocalTime

其他可能性:您的 lotuscript 代码以 DD/MM/YYYY 格式在您的机器上运行(并且 PaymentDue 是这种字符串格式)。但是视图是在具有 MM/DD/YYYY 区域设置的服务器上计算的。


0
投票

您似乎想确保从 EndorsementEffectedDate 中删除时间部分。

这条线做到了,但是...

idoc.PaymentDue = paymentDue.DateOnly

... 将 idoc.PaymentDue 设置为 text 字段。根据DateOnly方法的帮助,它返回一个字符串。

如果您希望它被视为日期,您应该从 paymentDue.DateOnly 实例化另一个 NotesDateTime 对象并将这个新对象分配给 idoc.PaymentDue.

© www.soinside.com 2019 - 2024. All rights reserved.