2012-02-13 3 views
1

このコードで何が問題になっていますか?winformでDATETIMEプロパティの書式を変更するC#

Client c = new Client(); 
string format = "yyyy/MM/dd HH:mm:ss"; 
string dateAdded = now.ToString(format); 
c.RegistrationDate = DateTime.Parse(dateAdded); 

c.RegistrationDateは、クライアントクラスのdateTimeオブジェクトで、データベースに挿入します。

しかし、それは私のmysqlデータベースの形式に変な日付を変換しません。それは常に文字列形式が間違っていると言います。どうしたの?登録日を文字列に変換する必要がありますか?ありがとう

**編集:申し訳ありませんが、私は言及を忘れてしまった。 "now"はnow = DateTime.Now;で、現在の日時を取得します。

+0

あなたの 'now'変数はどのようなタイプですか?それが 'DateTime'の場合、なぜそれを' string'に変換してから、 'DateTime.Parse()'を使って 'DateTime'に戻しますか? –

+0

私は形式を変換したいので、最初にその形式を変更し、その型を変更する文字列に変換する必要があります^^。しかし、私は失敗しました... –

+0

Jon Skeetは既に指摘しているように、 'DateTime'はフォーマットを持っていません。単なる値です。書式設定された文字列が必要な場合、 'DateTime'ではなく' string'が必要なので、 'DateTime.Parse()'はまったく必要ありません。 –

答えて

3

DateTime doesnt のフォーマットを持っています。これは日付/時刻です。 (現地時間であれ、UTCなのか、それとも別の問題であれ、何でも構いません。)

まず、あなたは次のようにテキストを変換するべきではありません。それはトラブルのレシピです。ただ使用する:

c.RegistrationDate = now; 

...必要な丸めを実行する。

データベースにどのように値を挿入しようとしているのかわかりません。 SQL文の値を直接に含めている場合は、それが説明されます。 パラメータ化されたSQL文を使用して、パラメータに直接値を渡す必要があります。変換は必要ありません。

すでにデータを挿入している場合は、データの挿入に使用するコードを表示してください。いくつかの例については、documentationを参照してください。

+0

mrさんにお返事ありがとうございます。しかし、私がそれを使用しようとすると、自分のデータベースに送信しているフォーマットが自分のデータベースのフォーマットと一致しません。それは私にエラーを与える。 T_T私はまたdatetime形式ですが、その形式はyyyy/MM/ddです私のデータベース内の登録日を持っています。 xD –

+0

@rjtubera:実際にデータベースの日付/時刻フィールドの場合は、フォーマットについて気にする必要はありません。パラメータを使うと絶対にうまくいくはずです - もしあなたがエラーを出すなら、*エラーが何であるかを言う*。私たちに情報を与えないと、あなたを助けることはできません。 –

+0

それは私に "日付2/14/2012 8:10:35 AMの列 'dateAdded'行1で"不適切な日時の値を与える "2012年2月14日(日/月/年)は私が送信しているものですデータベースに必要なものは(年/月/日)形式です。 –

0

私はあなたが

string dateAdded = DateTime.Now.ToString(format); 

をやってしなければならないと仮定除いて、私はそうでなければ、私は「今」が何であるかわからない、C#のコードに何か問題があるとは思いません。

0

文化に問題がある可能性があります。ここに述べたようにあなたはParseExactを使用して試すことができます:

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

解析(String)メソッドをしようと、 現在のカルチャの書式設定のルールを使用して、日付と時刻の文字列 表現を解析しようとするため、異なる カルチャーで特定の文字列を解析すると、失敗したり別の結果を返すことがあります。特定の の日付と時刻の形式が異なるロケール間で解析される場合は、 DateTime.Parse(String、IFormatProvider)メソッドまたはParseExactメソッドのオーバーロードの1つである を使用し、形式指定子を指定します。

関連する問題