【问题标题】:Format Exception when trying to get date in VB.Net尝试在 VB.Net 中获取日期时出现格式异常
【发布时间】:2016-08-15 18:21:33
【问题描述】:

有人可以指导我为什么会收到此错误。我尝试了很多排列,但我无法解析字符串并从中获取日期

Public Function Starter(starterInput As LoginUserResponse) As List(Of GraphDataObj) Implements iSMS_Rest.Starter
Dim _currentUser = System.Web.HttpContext.Current.Cache(starterInput.tokenProp)
Dim res As Date
Dim provider As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture
Dim dateString As String
dateString = starterInput.dateProp  // VALUE HERE: "2016-08-31T03:59:59.000Z"
res = Date.ParseExact(dateString, "dd/MM/yyyy", provider)
'SOME CODE
End Function

我遇到的异常

我查看此链接寻求帮助:Convert a string to a datetime

【问题讨论】:

  • 字符串"2016-08-31T03:59:59.000Z" 的格式不是"dd/MM/yyyy"ParseExact 真正的意思是准确
  • ParseExact 表示您承诺确切地告诉它格式是什么样的。 "dd/MM/yyyy" 一点也不像 2016-08-31T03:59:59.000Z
  • @David:请您指导我如何获取 dd/MM/yyyy 格式的日期。
  • @Unbreakable:通过输入该格式的日期。例如,"15/08/2016"。该值被提供给该方法,此代码不会生成该值。如果您想提供不同的值,请提供不同的值。
  • Dim dt = DateTime.Parse("2016-08-31T03:59:59.000Z") 它已经是可以读取/解析的格式

标签: vb.net date


【解决方案1】:

你使用的值是:

"2016-08-31T03:59:5‌​9.000Z"

不是的格式:

"dd/MM/yyyy"

听起来ParseExact 不是您想要的。输入格式是一种很常见的日期格式,简单使用Parse就可以理解:

res = Date.Parse(dateString, provider)

(或者,如果您不相信所提供值的格式一致性,您也可以use Date.TryParse() instead。)

【讨论】:

  • 非常感谢您的回复。我相信一致性,因为我知道日期是如何从末尾传递的,因为我也只编写了该代码,而且我知道输入格式将始终如此。目前从您的回答中,我得到的日期为 #8/30/2016 11:59:59 PM# 。我能以某种方式只获得所需的格式吗?我有任何内置方法可以解析它或仅修剪它#8/30/2016#.
  • @Unbreakable:“获取日期为 #8/30/2016 11:59:59 PM#”是什么意思?问题是这个方法的输入是“2016-08-31T03:59:5‌​9.000Z”。所有这些操作的结果都是一个Date 对象。 Date 对象没有格式。您可以根据自己的喜好输出 Date,但在问题中您根本没有输出任何内容。
  • 很抱歉不清楚。我在将代码编写为res = Date.Parse(dateString, provider) 后检查了我得到的日期进行了调试
  • 我使用了您的建议并放置了该代码,然后对其进行了调试以查看其给出的输出。
  • @Unbreakable:那到底是什么问题呢?你问的是价值观的不同吗?看起来是时区差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
相关资源
最近更新 更多