【问题标题】:Conversion from string yyyyMMddHHmmss to type integer is not valid从字符串 yyyyMMddHHmmss 到整数类型的转换无效
【发布时间】:2020-03-18 18:13:48
【问题描述】:

我正在尝试编写一个通过 MVC Web 服务将其值传递给前端的系统。

当它运行时,我一直遇到这个错误,我无法通过它;我已将它隔离到这行代码中,但我看不出它有什么问题。这是代码行、时间戳和错误:

我不能透露太多代码,因为其中一些是敏感的,但这是通用的。如果您需要更多信息,我会尽力提供。

【问题讨论】:

  • 你需要做的是使用Option Strict On。它将使 Visual Studio 能够告诉您数据类型不匹配的位置。例如,您显示的代码暗示您试图将字符串存储在 Integer 或 DateTime 变量中,这是错误的。
  • 它已经打开了,将标签添加到代码顶部没有做任何事情
  • paymentRequest.TimeStamp的类型一定是DateTime吗?我知道它看起来像是来自#numbers PM#,但这就是它所声明的吗? CDate(paymentRequest.TimeStamp).ToString("yyyyMMddHHmmss") 能正常工作吗?
  • 这值得检查
  • paymentRequest.TimeStamp = DateTime.Now

标签: .net vb.net type-conversion nullable


【解决方案1】:

因为paymentRequest.TimeStamp的类型是Date?(即Nullable(Of DateTime)),那么你需要paymentRequest.TimeStamp.Value来获取它的值,所以代码sn-p应该是

.Timestamp = paymentRequest.TimeStamp.Value.ToString("yyyyMMddHHmmss") 

虽然它没有记录 (as far as I can find),但您也可以使用 CDateDate? 获取日期,因此:.Timestamp = CDate(paymentRequest.TimeStamp).ToString("yyyyMMddHHmmss")

您可能希望避免使用未记录的功能,因为它可能会在以后的版本中更改,恕不另行通知。

两种方式都会失败,错误为

System.InvalidOperationException: 'Nullable 对象必须有一个值。'

如果paymentRequest.TimeStamp.HasValueFalse


也许令人困惑的是,Nullable.ToString Method 的文档是这样说的

ToString 属性返回通过调用由 Value 属性返回的对象的 ToString 属性生成的字符串。

但是,需要注意的是,这只适用于带有 no 参数的 ToString() 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多