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

Extract date from string and format yyyy-mm-dd in vb.net

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

唯一疑惑:好像有点复杂,有没有更简单的方法? 但是,您能指出更好的解决方案吗?

使用此 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)

希望如此helps.for更多细节 DateTime.ParseExact and DateTime.TryParseExact Method

更新

从上面的代码中,您已经成功提取日期并将其存储到变量mdata。现在我们的下一个任务是将string转换为datetime,为此我们可以使用上面提到的两个内置 vb 函数 DateTime.ParseExact and DateTime.TryParseExact Method。如果你通过这些函数的 links.both 将提供给它的字符串值作为第一个转换,你可以很容易地理解函数背后的代码日期时间参数和我们指定为第二个参数的自定义格式。

有很多方法,但我会以最简单的方式回答,这样更容易应用。试试这个...

stringFormattedDate = CDate(stringNotFormattedDate).toString("yyyy-MM-dd")

如果这解决了您的问题,请在下面的评论中告诉我。 如果有错误,也请提出来,但对我来说很好。

我添加 CDate 的原因是将 string 日期转换为类型 date 以便我使用 .toString() 格式化它 returns您的字符串日期回到另一个字符串日期,其格式类似于您的 MySQL 格式

刚刚

strValue = Strings.Format(Now(), "yyyy-MM-dd")

会做