2009-04-07 8 views
0

C#を使用してASP.netで日付操作を実行する必要があります。mmm-yyの文字列(C#の時間形式)

  1. 私が入力した日付がフォーマットの「7月-05」でなければなりません(MMM-yy形式と文字列をタイプ - )... は、どのように私はこれを確認することができます???? または、どのように文字列として入力しているユーザーでも、これを検証できますか?

  2. これを検証した後、thtとDatabaseの値を比較する必要があります(たとえば、04/31/2007の値を持つbuy_period)。

どのように私は両方を比較するためのクエリを書くことができますか? (両方の日付が異なる書式のものであるため)

あなたはこれで私を助けることができますか?

答えて

1

は、文字列を検証し、DateTime値にそれを解析するTryParseExactメソッドを使用します。

DateTime month; 
if (DateTime.TryParseExact("MMM-yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out month)) { 
    // parsing was successful 
} 

DateTime値は、完全な値を埋めるために、月の最初の日と時間午前0時00分を使用します、 "jul-05"のような文字列は、2005-07-01 00:00:00.0000のような完全なDateTimeの値に解析されるので、その月の開始点になります。

DateTime nextMonth = month.AddMonths(1); 

今、あなただけの開始に日付を比較してのポイントを終了することができます:あなたはまた、あなたが取得され、来月の出発点を必要とするデータベースの日付にこれを比較するため

where date >= @Month and date < @NextMonth 
0

あなたの検証と比較は、2つの異なる操作でなければなりません。あなたは検証のためにたくさんのことをすることができます。

検証オプション:

1)上の文字列を分割「 - 」とMMM部分が数ヶ月のあなたのリストにあるかどうかを確認し、番号が有効であるかどうかを確認します。

2.)正規表現ですが、これは進んでいますが、1行に減らすことができます。興味がある場合はRegExを参照してください。

文字列を検証したら、その文字列をDateTimeオブジェクトに変換し、DateTime.Compare()を使用してそれを他の値と比較します。

希望に役立ちます。

5
DateTime myDateTime = DateTime.ParseExact(input, "MMM-yy"); 

あなたはその後、喜んでサーバー上の比較を行うためのパラメータとしてストアドプロシージャ(など)に渡すことができます(または単に日時を使用するには、既存のクエリの結果として返さ)

+0

+1ですが、すべてのデータをdatetime型としてプログラムに格納する必要があることを強調したいと思います。文字列を読み込んでユーザに表示するときにだけ、文字列を使用します。 –

+0

実際には、それは 'MMM'だと思います。 mmmは存在しませんか? mmは分/時間です。私はその文字列にとって大文字と小文字が重要だと思う。 –

+0

純粋なクロムは右 – Lucas

2

.NET Frameworkには、DateTime struct :: Parse、TryParse、ParseExact、TryParseExactにいくつかの素敵なメソッドがあります。

この情報はdiscussed on MSDNです。

カスタム日付文字列を提供しているので、ParseExactまたはTryParseExactを使用する必要があります。解析に失敗した場合、後で例外がスローされません。

..だから、これを試すことができます...

using System.Globalization; 

CultureInfo MyCultureInfo = new CultureInfo("en-US"); 
string myString = "Jul-05"; 
DateTime myDateTime = DateTime.ParseExact(myString, "MMM-yy", MyCultureInfo)) 
Console.WriteLine(); 

値myDateTimeは、その後DateTimeプロパティとしてデータベースに渡され、それに対してチェックすることができます。

EDIT:私が入力していたように、ローランドによって殴られた気分!

編集2:「MMM-yy」に注意してください。MSDN pageに記載されているように、MMMは、 "現在のSystem.Globalization.DateTimeFormatInfo.AbbreviatedMonthNamesプロパティで定義されている月の省略名を表します。" mmm(小文字)は無効です。

0

あなたは

DateTime date = DateTime.ParseExact(value, "MMM-yy", null); //checked at http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx 

を使用して、SQLコマンドのパラメータにその日付を使用することができます。

+0

4x m?大文字ではなく小文字ですか?それを確認したいかもしれません:) –

+0

Ok amended ... :) –

関連する問題