VB.任何字符串到日期的转换



简短的问题。我正试图将字符串转换为日期(稍后将其放入INSERT命令)。我的问题是,我正在读取的字符串总是不同的(没有规则,它将是什么格式-因为这是用户依赖的)。

我在stackoverflow上发现了这样一段代码:

DateTime myDate = 
    DateTime.ParseExact("2009-05-08 14:40:52,531", 
                        "yyyy-MM-dd HH:mm:ss,fff",
                        System.Globalization.CultureInfo.InvariantCulture)

,但在我的情况下,它将不起作用,因为我不知道我要导入什么样的格式。是否有通用的导入函数检查所有已知的格式?如果现在我该怎么写呢?(请给我一些提示)。

谢谢你的提示和提示,皮特

如果您不(或不能)在用户输入日期时验证日期(以确保它是一个有效日期),那么您就完蛋了。

考虑到当地人,1/2/2011可能是2月1日(爱尔兰,英国&欧洲),或者1月2日(美国)。

即使忽略当地人,它也会变得很复杂,有些人输入"星期四13/10/11",13号是星期四,如果他们错了,输入"星期五13/10/11",或者他们只是输入星期五10/11,是今天(2011年10月14日星期五)还是2011年11月的某个星期五。

然后你得到直观的用户输入"下周四",理论上你也可以处理,不是吗?

然后你会看到错字,112//2011,是11/2/2011,还是1/12/2011?

这里有太多的错误,尽你所能来确保用户输入是有效的,如果你必须移动天地,但要在用户输入数据的地方。

不,这是不可能的,但是您可以在数组中定义可能的formats并将其传递给ParseExactTryParseExact方法。

Dim format() As String = {"dd-MM-yy", "dd/MM/yy"}
Dim myDate As DateTime = DateTime.ParseExact("2009-05-08 14:40:52,531",format, 
                      System.Globalization.CultureInfo.InvariantCulture))

最新更新