我试图将现有的vba代码转换为vb.net代码。
目的是从字符串中提取日期,然后将其格式化为mySql样式。
我的vba代码是:
mData = Format(Left(Trim(Eventi(NuoviEv).innertext), 10), "yyyy-mm-dd")
在vb.net中,我能够使用以下内容来提取日期;但是我无法对其进行格式化。
mData = eventi(nuoviev).innertext.substring(0,10).trim()
如何为" yyyy-mm-dd"添加格式?到vb.net代码?
字符串的一个例子(' Eventi(NuoviEv).innertext')的值是:
03/12/2014 - Something happens
如果我使用它,是否浪费资源?:
mData = Eventi(NuoviEv).innertext.substring(6, 4) & "-" & _
Eventi(NuoviEv).innertext.substring(3, 2) & "-" & _
Eventi(NuoviEv).innertext.substring(0, 2)
感谢MAC我也得到了这个解决方案:
mData = Date.ParseExact(eventi(nuoviev).innertext.substring(0,10), "dd/mm/yyyy", nothing).tostring("yyyy-mm-dd")
唯一疑问:它似乎有点复杂,是不是有更简单的方法? 但是,你能指出更好的解决方案吗?
答案 0 :(得分:1)
将此Date.ParseExact
或Date.TryParseExact
与正确的格式字符串一起使用。
Dim dt As Date = Date.ParseExact(mData, "yyyy-mm-dd",
System.Globalization.DateTimeFormatInfo.InvariantInfo)
或
Dim format() = {"yyyy-mm-dd", "d/M/yyyy", "dd-MM-yyyy"}
Dim dt As Date = Date.ParseExact(mData, format,
System.Globalization.DateTimeFormatInfo.InvariantInfo,
Globalization.DateTimeStyles.None)
希望它有所帮助。有关详情 DateTime.ParseExact和DateTime.TryParseExact Method
<强>更新强>
从上面的代码中,您已成功提取日期并将其存储到变量mdata
。现在我们的下一个任务是将string
转换为datetime
,我们可以为此使用上面提到的两个内置vb函数 DateTime.ParseExact和DateTime.TryParseExact Method。如果你使用了链接,你可以很容易地理解函数背后的代码。这些函数的两个函数都将提供给它的字符串值转换为第一个参数datetime和自定义格式我们指定为第二个参数。
答案 1 :(得分:1)
有很多方法,但我会以最简单的方式回答它,所以这更容易应用。试试这个......
stringFormattedDate = CDate(stringNotFormattedDate).toString("yyyy-MM-dd")
如果这样可以解决您的问题,请告知我们以下评论。 如果有错误,请提高它但对我来说效果很好。
我添加CDate
的原因是将string
日期转换为date
类型,以便我使用.toString()
对其进行格式化,这会将您的字符串日期返回给另一个格式化为MySQL格式的字符串日期
答案 2 :(得分:1)
只是
strValue = Strings.Format(Now(), "yyyy-MM-dd")
会做