1

我有一个数据库,我需要存储一堆时间并根据时间进行计算,但是,时间可以在不同的日子里,所以只使用时间格式不会计算两者之间的正确差异。为了便于使用,我想限制他们必须输入多少日期,因为有很多次,我不想每次都输入完整的日期。我创建了以下自定义格式:16-Jan 15:00 (d-mmm h:nn)

我还创建了一个自定义输入掩码来配合这个:90-LLL\ 90:00

我的表单字段具有相同的格式和要匹配的输入掩码。该字段的初始输入工作正常,当我尝试编辑字段并更改一位数字时出现问题。它弹出与输入掩码不匹配的错误,即使它匹配。为了更改该字段,我必须删除所有内容,从文本框中删除焦点,然后重新单击。有没有办法解决这个问题?或者是否有另一种选择来计算时间之间的差异而不必使用可能超过 24 小时的日期(虽然不超过 48 小时)

4

1 回答 1

0

是的,您可以有一个复选框NextDay来标记结束时间是否是第二天。

那么你的时间跨度将是:

Dim Timespan As Date
Timespan = CDate([EndTime] - [StartTime] + Abs([NextDay]))

输入时间可以用这里的方法:输入24小时制

要格式化和显示您的时间跨度,也适用于 24 小时以上的值,请使用如下函数:

Public Function FormatHourMinute( _
  ByVal datTime As Date, _
  Optional ByVal strSeparator As String = ":") _
  As String

' Returns count of days, hours and minutes of datTime
' converted to hours and minutes as a formatted string
' with an optional choice of time separator.
'
' Example:
'   datTime: #10:03# + #20:01#
'   returns: 30:04
'
' 2005-02-05. Cactus Data ApS, CPH.

  Dim strHour       As String
  Dim strMinute     As String
  Dim strHourMinute As String

  strHour = CStr(Fix(datTime) * 24 + Hour(datTime))
  ' Add leading zero to minute count when needed.
  strMinute = Right("0" & CStr(Minute(datTime)), 2)
  strHourMinute = strHour & strSeparator & strMinute

  FormatHourMinute = strHourMinute

End Function
于 2016-01-17T09:52:09.940 回答