1

プロジェクトのほとんどのコードで NodaTime を使用しています。LocalDateTime を値として取得しており、フォーマットを変更して MySQL データベースに日時フィールドとして挿入する必要があります。

OffSetPattern で何かを見たことがありますが、使用方法がわかりません。

ここで、dbに書き込もうとしています。

public void SetDataLog(Controller controllerInfo, LocalDateTime time, string count)
{
    var count2 = Convert.ToInt32(count);

    var sql = "INSERT INTO controller_activation_log (controller_id, activations, date_created, date_created_timezone) VALUES(" + controllerInfo.controllerId + ", " + count2 + ", \'" + time + "\', \'UTC\')";
            mysqldb.Write(sql);
}

LocalDateTime 形式は 04/10/2014 10:45:02 となります (例) 文字列として 2014-04-10 10:45:02 にする必要があります。

文字列を張ろうとしましたが、明らかにこの場合はうまくいきません。パターンの作成と解析について何か見たことがありますが、NodaTime のどこにも見当たらないので、その方法がわかりません?? 一般的にNodaTimeとc#はまだ新しいので、比較的単純なものが欠けているかもしれません。必要なフォーマットを取得するのを手伝ってくれる人はいますか?

4

3 に答える 3

5

LocalDateTimeを使用していて、特定の方法で文字列としてフォーマットする必要がある場合は、次のようにします。

string s = time.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

フォーマット プロバイダーを渡す必要があります。この場合はCultureInfo.InvariantCulture.

ただし、日付を文字列として渡したり、文字列パラメーターを挿入して SQL ステートメントを作成したりしないでくださいクエリをパラメータ化し、適切なデータ型を使用してください!

MySQL では、タイプを使用する必要がありますDATETIME( NodaTime を格納するためLocalDateTime)。さまざまな日付/時刻データ型については、MySQL のドキュメントを参照してください。

また、MySQL クライアント ライブラリは Noda Time 型を認識.ToDateTimeUnspecified()しないため、パラメータを渡すときに を呼び出す必要がありますDateTime、 .

MySqlCommand cmd = new MySqlCommand();
cmd.Connection = yourConnection;
cmd.CommandText = yourSQLString; // use parameter placeholders like "@time"
cmd.Prepare();

cmd.Parameters.AddWithValue("@time", time.ToDateTimeUnspecified());
// and the rest of your parameters...

cmd.Parameters.ExecuteNonQuery();

また、SQL ステートメントでLocalDateTime. UTC を書いている場合は、おそらくInstant.

于 2014-04-10T16:26:09.607 に答える
0

または、単にこれを使用することもできます

String date = mydate.ToString("u", CultureInfo.InvariantCulture);
date=date.Substring(0,date.Length-1);
于 2014-04-10T16:48:15.713 に答える
-2

あなたはこれを行うことができます:

datetimeObj.ToString("s").Replace("T"," ")

または正規表現を行うことができます:

Regex.Replace("04/10/2014 10:45:02",@"(\d+)/(\d+)/(\d+)\s(\d+):(\d+):(\d+)","$3-$1-$2 $4:$5:$6");

または、次のこともできます.ToString("yyyy-MM-dd HH:mm:ss")

于 2014-04-10T15:59:50.443 に答える