【问题标题】:How can I format my "Date.Today" to go from MM/dd/yyyy to dd/MM/yyyy in VB.Net?如何在 VB.Net 中格式化我的“Date.Today”以从 MM/dd/yyyy 到 dd/MM/yyyy?
【发布时间】:2014-04-07 21:04:05
【问题描述】:

基本上,我在修复“日期”以及它如何在 SQL 中保存时遇到问题。它现在可以工作,它插入到表格等中,但不是我真正希望它插入的格式。它插入为MM/dd/yyyy(据我所知是美国方式),但我需要以我们在英国使用的格式放置,所以是的,它需要显示为dd/MM/yyyy(03/05/2014) .

实际上是否可以将其转换为我的不同时区?如果可以,它是如何完成的? (我的意思是指导我,否则我不会学习。)

这是我的代码,说明在将我的插入插入到实际的 SQL 数据库中时它的表现如何。

 Protected Sub OkBtn_Click(sender As Object, e As System.EventArgs) Handles OkBtn.Click
    Try
        '  Dim DayNo As Integer = 0
        ' Dim DateNo As Integer = 0
        ' Dim StartingDay As Integer = 0
        Dim ThisDay As Date = Date.Today
            ' Dim Week As Integer = 1
            ' StartingDay = ThisDay.AddDays(-(ThisDay.Day - 1)).DayOfWeek
            ' DayNo = ThisDay.DayOfWeek
            ' DateNo = ThisDay.Day
            ' Week = Fix(DateNo / 7)
            ' If DateNo Mod 7 > 0 Then
            'Week += 1
            ' End If
            ' If StartingDay > DayNo Then
            'Week += 1
            ' End If
            'Dim ThisWeek As String
            ' ThisWeek = Week
            Dim ThisUser As String
            ThisUser = Request.QueryString("")
            If ThisUser = "" Then
                ThisUser = "Chris Heywood"
            End If
            connection.Open()
            command = New SqlCommand("Insert Into FireTest([Date],[Type],[Comments],[Completed By]) Values(@Date,@Type,@Comments,@CompletedBy)", connection)
            command.Parameters.AddWithValue("@Date", ThisDay.ToString)
            command.Parameters.AddWithValue("@Type", DropDownList1.SelectedValue)
            command.Parameters.AddWithValue("@Comments", TextBox2.Text)
            command.Parameters.AddWithValue("@CompletedBy", ThisUser)
            'command.Parameters.AddWithValue("@Week", ThisWeek)
            command.ExecuteNonQuery()
    Catch ex As Exception
        MessageBox.Show("Please make sure all fields are filled in!")
    End Try
    connection.Close()
    Response.Redirect("~/Production/Navigator.aspx")
End Sub

编辑:我已经编辑了它插入 & 的方式,但它仍然没有显示为 dd/MM/yyyy。

【问题讨论】:

  • 不要将日期存储为字符串!将列的类型更改为 date(或 datetime 用于旧版本的 SQL),并在客户端中进行格式化。
  • 当使用AddWithValue时,附加值的类型应该反映DB中的列类型。因此,在您的情况下,您名为 [Date] 的 sql 列是“字符串”列?
  • Richard ,在 SQL 中它是 Date 类型,这是我试图将其保存为字符串时出错的地方吗?
  • 任何 rdbms 都可以存储一个datetime,那么为什么要使用字符串呢?此外,服务器上的MessageBox 没有多大意义。您还应该使用using-statement 进行连接,以确保它尽快关闭,即使出现错误。
  • @Kallumasaurus:是的,如果SQL类型是date,那么你需要把它作为日期传递。

标签: sql sql-server vb.net date datetime


【解决方案1】:

或许可以试试Date.Today.ToShortDateString

我使用它的另一种方法Date.Today.ToString("dd/MM/yyyy")

试一试,然后回复我。

编辑:

试试这个:

Dim culture As New CultureInfo("fr-FR") 
Date.Today.ToString("dd/MM/yyyy", culture)

【讨论】:

  • 我已经尝试了这两种方法,因为它无法将日期转换为字符串。
【解决方案2】:

如果日期列中有日期时间数据类型,请不要在数据库中将日期时间保存为字符串

command.Parameters.AddWithValue("@Date", ThisDay)

您无需致电tostring

但在这种情况下,我什至不会使用参数。我会让 db 插入日期

Insert Into FireTest([Date],[Type],[Comments],[Completed By]) Values(GETDATE(),@Type,@Comments,@CompletedBy)

【讨论】:

    【解决方案3】:

    使用AddWithValue 时,附加值的类型应反映数据库中的列类型。只需将您的代码更改为:

    command.Parameters.AddWithValue("@Date", Date.Today)
    

    【讨论】:

      【解决方案4】:

      由于你的数据库列是date类型,添加参数时去掉.ToString调用:

      command.Parameters.AddWithValue("@Date", ThisDay)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2013-08-31
        • 2020-02-24
        • 2014-04-30
        • 2021-12-18
        相关资源
        最近更新 更多