我正在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”,并在运行时显示错误。
答案 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
希望您将日期存储为日期,而不是字符串