2017-02-14 123 views
-1

我在SQL SERVER中有一堆记录,并且我遇到了其中一个字段的问题。格式化日期(以日期时间保存在数据库中)

数据类型是日期时间。系统只插入一个没有时间的日期,因此'1/2/2017' - 因此当它插入到SQL SERVER中时,它只会显示为1/2/2017 00:00:00。现在,我试图做的就是像保存在数据库中一样显示它。

我查询数据库,并像这样显示它...

If Not IsDBNull(dr("ReceivedOn")) Then 
     txtReceivedOn.Text = Format(dr("ReceivedOn"), "MM/dd/yyyy hh:mm tt") 
    End If 

我蒙面文本框的面具是liek这.....

00/00/0000 90:00 aa 

当它得到displayd在蒙面文本框是显示日期和12:00 AM

1/2/2017 12:00:00 AM 

有没有摆脱它,只显示为0的incorr代替等时间?不过,我想只看到一个12小时的时间,而不是24

+0

你的意思是你想把12:00 AM改成00:00:00吗? – Ben

+0

只需更改HH – Steve

+0

@ben yes即时尝试显示00:00因为12 AM是不正确的时间。这仅仅是几百年的记录。所有新的日期都保存在正确的时间 – BobSki

回答

1

您需要在DateTime Custom Date and Time strings几个小时的格式说明从hh改变HH

If Not IsDBNull(dr("ReceivedOn")) Then 
    txtReceivedOn.Text = Format(dr("ReceivedOn"), "MM/dd/yyyy HH:mm tt") 
End If 

在MSDN你可以阅读

“HH”自定义格式说明符(加上任意数量的附加“H” 说明符)表示小时为从00到23的数字;即 是,该小时由零基24小时制表示,其自午夜以来的小时数为 。一位数的小时格式为 前导零。

请注意,对于这种格式,tt是没有意义的。

+0

它显示24小时时钟 - 我需要它显示AM/PM 12小时。我遇到的问题是,如果SQL SERVER显示时间为00:00:00,因为只有一个日期被插入到datatime字段中 - 我的屏蔽文本框将其显示为12:00 AM - 我不想这样做。我希望它只显示日期和00:00:00。人们不喜欢军事/欧洲时间。所有插入的新记录都有时间戳,所以用hh而不是HH精确显示 – BobSki

+0

然后就是MaskedTextBox的问题了?您可以将Mask属性设置为00/00/0000以支持DatePart,但我认为该控件无法显示时间部分,请让我检查一下 – Steve

+0

是的,我将此掩码设置为:00/00/0000 90:00 aa - 所以当我删除tt并添加HH而不是hh时,它显示它就像这样1/2/2017 12:00 __。我完全删除了面具,仍显示相同的事情。 :( – BobSki