VB.NET - 任何字符串到目前为止的转换

时间:2011-10-14 14:36:45

标签: vb.net string date string-conversion

简短的问题。我正在尝试将字符串转换为Date(稍后将其放入INSERT命令)。我的问题是我正在阅读的字符串总是不同(没有规则它将是什么格式 - 因为这是用户相关的。)

我在stackoverflow上找到了这样的代码:

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

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

提前感谢任何提示和提示, 皮特

2 个答案:

答案 0 :(得分:1)

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

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

即使忽略当地人也会变得毛茸茸,有人提出“星期四13/10/11”,第13次星期四很好,如果他们弄错了并放入“星期五13/10/11”,或者他们只是在10月11日星期五,即今天(2011年10月14日星期五)或2011年11月的某个星期五。

然后你会得到进入“下周四”的直观用户,理论上你也可以处理它,你呢?

然后你得到错别字,112 // 2011,是2011年11月2日,还是2011年1月12日?

这里出现了太多问题,做任何你需要做的事情来确保用户输入是有效的,如果必须的话,移动天堂和地球,但是在用户输入数据时这样做。

答案 1 :(得分:0)

不可以,但是您可以在数组中定义可能的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))