【问题标题】:Select date format选择日期格式
【发布时间】:2019-02-20 00:13:03
【问题描述】:

我想设置一个日期格式,这样当我读取我的文本文件并将其转换为 XML 时,日期格式就不会有任何复杂性。 IE。如果我正在阅读具有美国日期格式或英国日期格式的文本文件,我不希望发生任何错误。

我已经编写了将文本文件转换为 XML 文件的代码,并且工作正常。但是,现在我正在尝试确保生日格式正确。

老实说,我不确定该怎么做。

另外,是否可以通过使用组合框来做到这一点,以便用户选择日期的格式?

【问题讨论】:

  • 请将代码缩进 4 个位置,以便格式正确。
  • 完成感谢 Dirk:)
  • 您是否创建文本文件?我有点不清楚您如何或为什么使用日期分隔符。阅读您的文本文件后,您可以DateTime.TryParse 评估您是否有一个体面的约会。
  • 否 我正在读取文本文件并将其转换为 xml。我想使用日期分隔符来识别正在转换的文本文件是否具有例如 DD/MM/YY 格式或 MM/DD/YY

标签: xml vb.net


【解决方案1】:

为了让您可以试验一下它是如何工作的,我建议您暂时创建一个新的 Windows 窗体项目,并在窗体上放置一个 ComboBox(命名为 cbDateFormat)和一个按钮(命名为 Button4)和使用此代码:

Public Class Form1

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Dim str = "1/4/19" ' test data '

        If cbDateFormat.SelectedIndex = -1 Then
            MsgBox("Please select the date format.")
            Exit Sub
        End If

        Dim dateFormat = ""

        Select Case cbDateFormat.Text
            Case "DD/MM/YYYY"
                dateFormat = "d/M/yyyy"
            Case "MM/DD/YYYY"
                dateFormat = "M/d/yyyy"
            Case "DD/MM/YY"
                dateFormat = "d/M/yy"
            Case "MM/DD/YY"
                dateFormat = "M/d/yy"
            Case Else
                Throw New Exception("Date format not found.")
        End Select

        Dim d As DateTime
        If DateTime.TryParseExact(str, dateFormat, Globalization.CultureInfo.InvariantCulture, Nothing, d) Then
            ' d now holds the datetime '
            MsgBox(d.ToString("dd-MMM-yyyy"))
        End If

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cbDateFormat.Items.AddRange({"DD/MM/YYYY", "MM/DD/YYYY", "DD/MM/YY", "MM/DD/YY"})

    End Sub

End Class

它使用DateTime.TryParseExact 能够解析具有用户选择的日期格式的字符串。

我故意使用了 1/4/19 的测试日期,因为它可能是 4 月 1 日或 1 月 1 日。 19 年 1 月 1 日的测试日期不会有帮助。

那么一定要把日期写在XML中,格式为yyyy-MM-dd,这样才不会产生歧义。

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
  • 2018-07-27
  • 2015-01-25
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
相关资源
最近更新 更多