【问题标题】:How to Convert DateTime to String如何将日期时间转换为字符串
【发布时间】:2013-08-29 01:32:42
【问题描述】:

while 循环中的 ra.Value 有时是 DateTime 类型,不幸的是 .ToString() 方法不足以将其转换为字符串。我应该对我的代码进行更改,以识别 ra.Value 何时为 DateTime 类型并将其转换为字符串。现在我有一个例外,从“日期时间”类型到“字符串”类型的转换无效。

With ro.Attributes.GetEnumerator
    While .MoveNext
        Dim ra As ReportAttribute = CType(.Current, ReportAttribute)
        Dim lstrColumnReportObj As Integer = ra.Column
        Dim lstrValueReportObj As String = ra.Value.ToString()
        lstrParTable(lstrColumnReportObj) = lstrParTable(lstrColumnReportObj) + lstrValueReportObj
    End While
End With

谢谢。

【问题讨论】:

  • 不幸的是 .ToString() 方法不足以将其转换为字符串 这没有意义。 ToString() 返回 String。总是。
  • 乍一看我会说这可能是您的问题所在:lstrParTable(lstrColumnReportObj) + lstrValueReportObj。你确定lstrParTable(lstrColumnReportObj) 不是日期时间吗?您不能连接 DateTime 和字符串。
  • 有很多方法可以将日期时间转换为字符串。见这里stackoverflow.com/questions/3477735/…
  • 哪一行给出了错误?
  • 一些问题:lstrParTable 是什么? OPTION STRICT 是否设置为 ONOPTION INFER 是否设置为 ON?为什么你使用GetEnumeratorMoveNext 而不是For Each

标签: vb.net string datetime


【解决方案1】:

您可能正在寻找的简单解决方案是:

With ro.Attributes.GetEnumerator
    While .MoveNext
        Dim ra As ReportAttribute = CType(.Current, ReportAttribute)
        Dim lstrColumnReportObj As Integer = ra.Column
        Dim lstrValueReportObj As String = Nothing
        If TypeOf ra.Value Is Date Then
            lstrValueReportObj = ra.Value.ToString("d MMM yyyy")
        Else
            lstrValueReportObj = ra.Value.ToString()
        End If
        lstrParTable(lstrColumnReportObj) = lstrParTable(lstrColumnReportObj) + lstrValueReportObj
    End While
End With

但是,这确实有点糟糕的做法,您可能需要重新考虑您的整体设计。通常,当您必须开始为某些类型添加特殊逻辑时,例如,这通常表明您可以以更好的方式进行操作。例如,当您开始需要其他类型的自定义格式时会发生什么。一旦你有多个异常,它就会变得笨拙并且代码会很脆弱(容易出现错误)。

另外,我觉得有必要提到在 .NET 中不鼓励使用匈牙利表示法。如果您的雇主要求您使用它,那很好,否则,我建议您通读official Microsoft naming guidelines

【讨论】:

  • 感谢您的回复,但现在我收到错误消息“字符串类型的表达式永远不能是日期类型”,但如果 ra.Value 始终是字符串,为什么我会出现第一个错误?跨度>
  • 我不确定。 ReportAttribute 类型是什么?这是您在代码中定义的内容,还是来自某种第三方库的内容。
  • 来自第三方库
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
相关资源
最近更新 更多