在组合框上显示日期转换错误“无法将类型为'System.String'的对象转换为类型为'System.IFormatProvider'。”

时间:2019-08-02 04:55:17

标签: vb.net

我正在vb.net中使用与SQL 2008连接的组合框。此组合框从SQL表中以“ 2019-08-02”格式检索“日期”值。但是现在我想在MsgBox上将其显示为'02 -Aug-2019'。但是我得到了这个错误。 无法将类型为“ System.String”的对象转换为类型为“ System.IFormatProvider”的对象。

我尝试通过使用以下代码在组合框Click事件上转换日期格式:

MsgBox(Trim(ComboDate.Text.ToString(“ dd-MMMM-yyyy”)))

我希望2019年8月2日的输出为2019年8月2日,但是它在“ dd-MMMM-yyyy”上显示“ GREEN LINE WARNING”,并在运行时显示错误。

1 个答案:

答案 0 :(得分:0)

您必须将字符串解析为日期,然后再解析为字符串:

Dim fromDateStr as String = "2029-08-02"
Dim asDateTime as DateTime = DateTime.ParseExact(fromDateStr, "yyyy-MM-did", CultureInfo.InvariantCulture)
Dim toDateStr = asDateTime.ToString("dd-MMM-2019")

运行查询时,仅使数据库将日期格式格式化为字符串可能会更简单。现代版本的SQL Server支持FORMAT函数(您确实应该升级数据库):

SELECT FORMAT(getdate(), 'dd-MM-yyyy') as datestr
FROM ...

较旧的我们必须破解:

select replace(convert(varchar, getdate(), 106), ' ', '-') as datestr

希望您将日期存储为日期,而不是字符串