【问题标题】:Extract date from string and format yyyy-mm-dd in vb.net从字符串中提取日期并在 vb.net 中格式化 yyyy-mm-dd
【发布时间】:2015-07-14 02:31:17
【问题描述】:

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

只有一个疑问:看起来有点复杂,难道没有更简单的方法吗? 但是,您能指出更好的解决方案吗?

【问题讨论】:

  • 你能添加一些你想要评估的示例字符串吗?

标签: mysql vb.net vba date format


【解决方案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。如果你通过链接,你可以很容易地理解函数背后的代码。这两个函数都将作为第一个参数提供给它的字符串值转换为日期时间,并转换为我们指定为第二个参数的自定义格式.

【讨论】:

  • 我是 vb.net 的新手……你能再解释一下吗?我无法将其应用于我的代码
  • 我在问自己:为什么要使用日期对象?是唯一的方法吗?我只需要一个字符串(我更喜欢一个用于更新数据库的字符串)
  • 这取决于您将其用作字符串还是日期类型。我只是在stackoverflow中回答您的问题,而不是您的想法。
  • 对不起,我不是故意的。我只是说我的代码 vba 返回了一个字符串
  • 看,这不是关于 bieng 粗鲁之类的,在提问时要具体,否则你的问题将毫无用处,而且程序员花费的时间也被浪费了。
【解决方案2】:

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

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

如果这解决了您的问题,请让我知道下面的 cmets。 如果有错误,也请提出,但它对我来说很好。

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

【讨论】:

  • 谢谢,它没有解决,但你的回答让我明白了方法。这可行:mData = Date.ParseExact(eventi(nuoviev).innertext.substring(0,10), "dd/mm/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo).tostring("yyyy-mm-dd") 只是一个疑问:看起来有点复杂,没有更简单的方法吗?
  • 让我澄清一下..您正在尝试从日期/时间字符串中解析日期,而字符串又来自哪里?
  • 我需要提取意大利风格的日期并将其转换为 SQL 风格
  • 你能在这里评论一下你所说的“意大利风格”的格式吗?
  • 我举了一个原始字符串的例子:“03/12/2014 - 发生了什么事”,其中日期是 2014 年 12 月 3 日,我需要一个 SQL 样式的字符串:“2014-12-03”。我希望现在很清楚
【解决方案3】:

只是

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

会的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2014-04-23
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    相关资源
    最近更新 更多