我有一个数据库,我需要存储很多次并根据时间进行计算,但是,时间可以是不同的时间,所以只使用时间格式不会计算两者之间的正确差异。为了便于使用,我想限制他们输入的日期,因为有很多次,我不想每次都输入完整的日期。我创建了以下自定义格式:16-Jan 15:00(d-mmm h:nn)
我还创建了一个自定义输入掩码:90-LLL \ 90:00
我的表单字段具有相同的格式和输入掩码。该字段的初始输入工作正常,当我尝试编辑字段并更改一位数时,问题就出现了。它弹出的错误是它与输入掩码不匹配,即使它确实如此。为了更改字段,我必须删除所有内容,从文本框中删除焦点,然后单击返回。无论如何要修复它吗?或者是否有其他选项来计算时间之间的差异,而不必使用超过24小时的日期(不超过48)
答案 0 :(得分:0)
是的,您可以设置一个复选框 NextDay ,以标记结束时间是否为第二天。
然后你的时间跨度将是:
Dim Timespan As Date
Timespan = CDate([EndTime] - [StartTime] + Abs([NextDay]))
要输入时间,您可以使用此处的方法:Entering 24-hour time
要格式化和显示您的时间跨度,对于超过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