两个日期/时间字段之间的区别 - 的Lotus Notes(Difference between t

2019-09-22 09:13发布

我有三个可编辑的日期/时间字段其中前两个是(Field 1和场2),风格:日历/时间控制。 他们两人都出现时间:小时和分钟,例如:15:51。

第三场也(可编辑),我想显示FIELD1和FIELD2的区别。

例如:如果FIELD1是14:41和Field2是14:30,那么字段3 = 00:11。 我试过字段1字段2,但不工作。 窗体有自动刷新的字段属性。 谢谢!

Answer 1:

你的第三个字段需要计算,不可编辑。

如果它有某些原因可编辑,并且要在其他两个领域都改成了更新,这样做:

创建一个新的领域,并使其计算,用于显示和隐藏。 给它一个这样的公式

@If(field1=null | field2=null; @Return(""); "");
seconds := field1-field2;
hours := @Integer(seconds/3600);
minutes := @Modulo(@Integer(seconds/60); 60);
output := @Right("00" + @Text(hours); 2) + ":" + @Right("00" + @Text(minutes); 2);
@setfield("field3"; output);
@Command([ViewRefreshFields]);
""

菲尔



Answer 2:

我写了这个代码,很容易...

字段“开始时间”和“结束时间”:类型日期/时间,使用日历/时间控制,将其设置为只显示时间。 检查属性“运行退出/事件的OnChange价值变动后”。 退出的事件应该是这样的:

Sub Exiting(Source As Field)
    Call UpdateDuration()
End Sub

现场“长”:可编辑文本字段,但隐藏的。

现场“dspDuration”:计算用于显示文本字段。 值仅是“持续时间”(不含引号)。

然后添加以下代码到表单全球部分:

Sub UpdateDuration()
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim starttime As NotesDateTime
    Dim endtime As NotesDateTime
    Dim duration As Integer

    Set uidoc = ws.CurrentDocument
    '*** Exit if not both times are entered
    If uidoc.FieldGetText("StartTime") = "" Then
        Exit Sub
    Elseif uidoc.FieldGetText("StartTime") = "" Then
        Exit Sub        
    End If
    '*** Calculate duration in seconds and update field
    Set starttime = New NotesDateTime( uidoc.FieldGetText("StartTime") )
    Set endtime = New NotesDateTime( uidoc.FieldGetText("EndTime") )
    duration = endtime.TimeDifference( starttime )
    Call uidoc.FieldSetText("Duration", Cstr(duration) )
    Call uidoc.Refresh()
End Sub

而已。 很简单,不是吗? 如果你想修改输出(持续时间),你可以很容易地做到这一点,也许60更改成分钟的潜水了。



Answer 3:

请确保你得到两个日期时间字段之间的区别。 如果需要,你可以使用@TextToTime公式将文本转换为datetime型。

然后,只需减去第二日的第一次约会,你会得到在几秒钟的差异。

然后除以60得到以分钟为单位的差异。



文章来源: Difference between two date/time fields - Lotus Notes