1

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

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

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

但就我而言,它不起作用,因为我不知道要导入哪种格式。是否有任何通用导入功能可以检查所有已知格式?如果现在应该怎么写?(请给我一些提示)。

提前感谢您提供的任何提示和提示,Pete

4

2 回答 2

1

如果您在用户输入日期时不(或不能)验证日期(以确保它是有效日期),那么您有点搞砸了。

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

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

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

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

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

于 2011-10-14T14:46:27.980 回答
0

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

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))
于 2011-10-14T14:44:40.240 回答