-1

如何强制Date/Time绑定文本框中的输入值同时包含日期组件和时间组件(换句话说,完整的时间戳)?

更新(澄清):该列是用户输入的时间戳,因此缺少日期或缺少时间没有意义。

4

2 回答 2

2

文本框绑定到日期/时间字段。日期/时间值始终包括日期和时间部分。如果用户不提供日期组件,则日期将为第 0 天(1899 年 12 月 30 日)。如果用户不提供时间组件,则时间将为午夜 (00:00:00)。

如果 1899 年 12 月 30 日超出了您需要适应的日期值范围,则很容易要求用户输入一个(非零)日期。

查看此即时窗口会话是否有助于澄清情况。

? #07:00#
7:00:00 AM 
? Format(#07:00#, "yyyy-m-d hh:nn:ss")
1899-12-30 07:00:00
? DateValue(#07:00#) = CDate(0)
True

您可以使用文本框的更新前事件来检查DateValue(Me.TextBoxName) = CDate(0) 如果该表达式为True,则向用户和更新显示通知Cancel

对于时间要求...

? #2013-7-31#
7/31/2013 
? Format(#2013-7-31#, "yyyy-m-d hh:nn:ss")
2013-7-31 00:00:00
? TimeValue(#2013-7-31#) = CDate(0)
True

逻辑类似于日期片,复杂的是午夜可能是可接受的时间值。如果是这样,我看不出您如何区分由于没有输入时间值而输入的用户午夜和午夜。也许最好的办法是让用户确认午夜时间。

于 2013-07-31T16:04:17.570 回答
2

如果你真的想这样做,那么你可以创建一个输入掩码,例如:

00/00/0000\ 00:00:00;0;_

一旦他们开始打字,它就会坚持输入所有数字。然后仍然可以按 Esc 放弃字段编辑。

我不是 Input Masks 的忠实拥护者——尤其是日期,因为它迫使用户使用他们可能不太习惯的格式。

如果您还使用 Format 属性,则在使用输入掩码时要小心;如果它们不匹配,可能会很麻烦。

我还建议,如果您对此数据输入有不同的形式,则始终使用相同的掩码。

于 2013-07-29T20:50:21.360 回答