【问题标题】:How to parse a date as iso in VB.NET如何在 VB.NET 中将日期解析为 iso
【发布时间】:2017-02-24 01:23:41
【问题描述】:

我正在尝试解析 vb.net 中的日期,如下所示。

Dim EndDate As Date = Date.Now.ToString("yyyy-MM-dd")
If Date.TryParseExact(txtEndDate.Text, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, EndDate) Then
  EndDate = txtEndDate.Text
Else
  txtEndDate.Text = EndDate
End If

我不明白为什么我上面的代码输出00:00:00

期望的结果

如果日期输入无效ISO日期"yyyy-MM-dd"

txtEndDate.TextEndDate 设置为今天的日期为**ISO


示例

如果我传入2016-15-10

EndDate 被设置为 #10/15/2016 12:00:00 AM#

如果我传入asfd

EndDate 设置为 #1/1/0001 12:00:00 AM#

【问题讨论】:

  • 最后一个参数应该是存储结果的日期,你传递的是一个字符串。 Function TryParseExact(s As String, format As String, provider As System.IFormatProvider, style As System.Globalization.DateTimeStyles, ByRef result As Date) As Boolean
  • 即使我将变量设置为日期,输出也是 1/1/0001 12:00:00 AM
  • 你解析的值是多少?
  • 见上例
  • 您正在验证(解析)一个字符串。一般来说,如果它失败了,你需要新的输入(不知道这些来自哪里,用户?)。请注意,像2016-10-5 这样的完美日期也会因该格式字符串而失败,因为日期不是dd 或'05'。 "yyyy-M-d" 将解析 1 或 2 位数字形式

标签: asp.net vb.net date parsing datetime


【解决方案1】:

你会不会这样做:

Dim EndDate As String = Date.Now.ToString("yyyy-M-d")
If Not Date.TryParseExact(txtEndDate.Text, "yyyy-M-d", CultureInfo.InvariantCulture, DateTimeStyles.None, EndDate) Then
  txtEndDate.Text = Date.Now.ToString("yyyy-M-d")
End If

如果成功,则 EndDate 将按预期返回,但如果不成功,则像上面一样设置为今天。

【讨论】:

  • 好吧,如果你想对它完全合乎逻辑的话。有时显而易见的是令人眼花缭乱。 :)
猜你喜欢
  • 1970-01-01
  • 2013-05-14
  • 2011-06-17
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2021-12-15
相关资源
最近更新 更多