两个日期/时间字段之间的差异 - Lotus Notes

时间:2012-09-13 12:43:52

标签: datetime field lotus-notes domino-designer-eclipse

我有三个可编辑的日期/时间字段,前两个是(field1和field2),样式:日历/时间控件。他们两个都显示时间:小时和分钟,例如:15:51。

第三个字段(可编辑)我想显示field1和field2之间的区别。

例如:如果field1是14:41而field2是14:30,则field3 = 00:11。我已经尝试过field1-field2但是没有用。该表单具有自动刷新字段属性。谢谢!

3 个答案:

答案 0 :(得分:3)

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

如果由于某种原因它是可编辑的,并且您希望在更改其他两个字段时更新它,请执行以下操作:

创建一个新字段并使其为计算显示和隐藏。给它一个像这样的公式

@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]);
""

菲尔

答案 1 :(得分:1)

我写了这段代码,更容易......

字段'Sta​​rtTime'和'EndTime': 键入日期/时间,使用日历/时间控件,将其设置为仅显示时间。 检查属性“值更改后运行退出/ 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来将其改为几分钟。

Screenshot

答案 2 :(得分:0)

确保您获得两个日期时间字段之间的差异。如果需要,可以使用@TextToTime公式将文本转换为日期时间类型。

然后从第二个日期中减去第一个日期,您将获得秒数的差异。

然后将其除以60得到分钟的差异。