我使用绑定源在文本框中显示数据库中的数据,我能知道如何格式化在文本框中显示的日期和时间吗?

Im using binding source to display data at textbox from database, can i know how to format date and time displayed at textbox?

我正在使用绑定源,它通过设置每个文本框的数据绑定属性来显示来自数据库的文本框的数据,Me.PaymentTableAdapter.Fill(Me.RestaurantDataSet.Payment)

我能知道如何格式化日期和时间,例如在文本框显示的 04 Jan 202023:00 吗?默认显示样式为2020/01/0423:00:00

我搜索了 google,但 none 的解决方案有效

我刚刚测试了以下代码,它按预期工作:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim table As New DataTable

    With table.Columns
        .Add("Date", GetType(Date))
        .Add("Time", GetType(TimeSpan))
    End With

    With table.Rows
        .Add(#1/1/2000#, TimeSpan.FromHours(5.0))
        .Add(#2/4/2008#, TimeSpan.FromHours(10.25))
        .Add(#3/8/2016#, TimeSpan.FromHours(15.5))
        .Add(#4/12/2024#, TimeSpan.FromHours(20.75))
    End With

    BindingSource1.DataSource = table

    UnformattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date")
    UnformattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time")
    FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date", True, DataSourceUpdateMode.OnValidation, Nothing, "dd MMM yyyy")
    FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time", True, DataSourceUpdateMode.OnValidation, Nothing, "hh\:mm")
End Sub

我用了四个 TextBoxes - 两个没有格式化,两个有。如您所见,我在绑定未格式化的 TextBoxes 时仅提供了基本信息,但使用了带有更多参数的 Add 的重载,以指定启用了格式化以及绑定时格式应该是什么格式化 TextBoxes。为了提供格式字符串,您还必须提供数据源更新模式和空值。在这种情况下,我已经为每个指定了默认值。如果您不想指定这些值,那么您可以返回到更基本的重载,然后在创建后设置其他必需的属性:

With FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date")
    .FormattingEnabled = True
    .FormatString = "dd MMM yyyy"
End With

With FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time")
    .FormattingEnabled = True
    .FormatString = "hh\:mm"
End With

注意,如果你的时间数据也是Date类型,原理还是一样的。您只需使用不同的格式字符串:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim table As New DataTable

    With table.Columns
        .Add("DateTime", GetType(Date))
    End With

    With table.Rows
        .Add(#1/1/2000 5:00:00#)
        .Add(#2/4/2008 10:15:00#)
        .Add(#3/8/2016 15:30:00#)
        .Add(#4/12/2024 20:45:00#)
    End With

    BindingSource1.DataSource = table

    UnformattedDateTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
    UnformattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")

    With FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
        .FormattingEnabled = True
        .FormatString = "dd MMM yyyy"
    End With

    With FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
        .FormattingEnabled = True
        .FormatString = "HH:mm"
    End With
End Sub