从字符串中提取日期并在vb.net中格式化yyyy-mm-dd

时间:2015-05-04 16:05:50

标签: mysql vb.net vba date format

我试图将现有的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")

唯一疑问:它似乎有点复杂,是不是有更简单的方法? 但是,你能指出更好的解决方案吗?

3 个答案:

答案 0 :(得分:1)

将此Date.ParseExactDate.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.ParseExactDateTime.TryParseExact Method

<强>更新

从上面的代码中,您已成功提取日期并将其存储到变量mdata。现在我们的下一个任务是将string转换为datetime,我们可以为此使用上面提到的两个内置vb函数 DateTime.ParseExactDateTime.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")

会做