1

一連の時間を保存し、時間に基づいて計算を行う必要があるデータベースがありますが、時間は異なる日になる可能性があるため、時間形式だけを使用しても2つの間の正しい差は計算されません. 使いやすさのために、入力する必要がある日付の量を制限したかったのです。これは、何度も入力する必要があり、毎回完全な日付を入力する必要がないためです。次のカスタム形式を作成しました: 16-Jan 15:00 (d-mmm h:nn)

これに合わせてカスタム入力マスクも作成しました: 90-LLL\ 90:00

私のフォーム フィールドには、一致する同じ形式と入力マスクがあります。フィールドの最初の入力は正しく機能します。フィールドを編集して 1 桁を変更しようとすると問題が発生します。入力マスクと一致していても一致しないというエラーが表示されます。フィールドを変更するには、すべてを削除し、テキストボックスからフォーカスを外してから、もう一度クリックする必要があります。それを修正する方法はありますか? または、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 に答える