2017-07-31 25 views
0

这太让我困惑了,我需要我的日期格式为yyyy/mm/dd它是这种情况,当我注册新用户它会显示错误,只接受该格式,但是一旦我保存他们的信息,日期显示为dd/mm/yyyy文本和网格视图。日期格式是正确的yyyy/dd/mm但它显示不同dd/mm/yyyy

任何想法是什么问题?

检查我custome验证器(它完全工作;问题是奇数)

Dim testing As Date 
    If Date.TryParseExact(txtentrydate.Text.ToString(), "yyyy/mm/dd", 
        System.Globalization.CultureInfo.CurrentCulture, 
        Globalization.DateTimeStyles.None, testing) Then 
     args.IsValid = True 
    Else 
     args.IsValid = False 
    End If 
End Sub 
+0

我认为月份应该是'MM',''yyyy/MM/dd'' – Fabio

+1

由于日期可能保存了一个Date,所以一旦它获得了值,单元格就会将其格式化,使用输入字符串。在单元的'DefaultCellStyle'属性中,调整'格式'属性 – litelite

+1

日期没有格式 - 它们只是一个数字 - 所以你不能“设置”格式。格式就是我们向用户显示它们的方式。您的代码正在测试字符串的格式而不是日期。 – Plutonix

回答

2

Date类型的变量不具有格式。日期就是这样 - 一个时间点。

只有当Date变量是转换为字符串时,才分配格式。所以,如果你说

... the date is shown as dd/mm/yyyy both on text and grid view.

那么你的代码将日期转换为其文本表示是错误的。你没有显示该代码,因此我们只能猜测。我的猜测是你依靠隐式转换,它将使用你当前的区域设置。

解决方案很简单:Explicity在将它们显示在用户界面之前先转换您的日期。您可以通过执行ToString("yyyy\/MM\/dd")将它们分配给您的UI控件时执行此操作,或通过使用支持数据绑定的控件正确设置某种“格式属性”来执行此操作。

PS:mm is for "minute".您想在您的格式字符串中使用MM

+0

无需在VB中转义它们 – Plutonix

+0

我检查了我的数据库,它存储在yyyy/MM/dd格式!我仍然不明白我需要做什么上面的Tostring转换。这里是我的loadTextFields代码:txtentrydate.Text = e.patient_entry_date – Sam

+0

日期没有格式 - 这听起来像你正在存储字符串,而不是日期。 @Sam – Plutonix