1

短い質問。文字列を日付に変換しようとしています(後でINSERTコマンドに入れるため)。私の問題は、私が読んでいる文字列が常に異なることです(これはユーザーに依存するため、どの形式になるかという規則はありません)。

スタックオーバーフローでそのようなコードを見つけました:

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

しかし、私の場合は、どのような形式をインポートしようとしているのかわからないため、機能しません。すべての既知の形式をチェックするユニバーサル インポート機能はありますか? 今ならどう書けばいいの?(ヒントを教えてください)。

事前にヒントやヒントをありがとう、ピート

4

2 に答える 2

1

ユーザーが入力した日付を検証しない(または検証できない)場合(有効な日付であることを確認するため)、ちょっと失敗しています。

地元の人々を考慮に入れると、2011 年 1 月 2 日は 2 月 1 日 (アイルランド、イギリス、ヨーロッパ) または 1 月 2 日 (アメリカ) になる可能性があります。

地元の人を無視しても、「Thursday 13/10/11」と入力する人もいれば、13 日は木曜日の罰金です。間違って「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を配列で定義して、ParseExactまたはTryParseExactメソッドに渡すことはできます。

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 に答える