11

私は次のコードを持っています-

DateTime timeStamp;

timeStamp = System.Convert.ToDateTime(y.InnerText);

どこy.InnerTextにありますか11/03/2013 11:35:24

しかし、データベースがフォーマットを探しているので、これは私のインポートステートメントを壊しています-

2013-03-11 11:35:24

DateTimeオブジェクトの形式を設定するにはどうすればよいですか?

4

6 に答える 6

27

DateTimeオブジェクトの形式を設定するにはどうすればよいですか?

できません。DateTime値にはフォーマットがありません。intまたはdouble値にはフォーマットがあります。文字列と間で変換する場合は、ここでフォーマット情報を指定します。

代わりに、パラメーター化されたSQLを使用DateTimeし、最初から値を文字列に変換しないようにする必要があります。これは一般的なベストプラクティスです。SQL文字列に値を含めないでください。パラメータ化されたSQLには複数の利点があります。

  • SQLインジェクション攻撃を回避します
  • このような変換の問題を回避します
  • コード(SQL)をデータ(パラメーター値)から分離します

また、を使用する代わりにConvert.ToDateTime、解析時に予想される形式を指定することをお勧めします。例えば:

timeStamp = DateTime.ParseExact(y.InnerText,
                                "dd/MM/yyyy HH:mm:ss",
                                CultureInfo.InvariantCulture);

基本的に、私が適用しようとしている2つのルールは次のとおりです。

  • 必要のない場所で変換を実行することは避けてください。すべてのシステムが可能な限り適切なデータ型を使用していることを確認すれば、多くの場合、変換をまったく行う必要はありません。
  • 文字列表現との間で変換する必要がある場合は、消費/生成する表現について非常に明確にしてください。機械可読値の場合、通常は不変のカルチャと、場合によってはカスタムの日付/時刻形式を使用する必要があります。人間が読める形式の値の場合、通常はユーザーの文化と標準の日付/時刻形式を使用する必要があります。
于 2013-03-14T11:09:24.923 に答える
3

このステップを使用します

  1. DateTimeに変換します。
  2. ToString();を使用します。働き

例 :

 DateTime myDateTime = DateTime.Now;
 string myDateTimeString = myDateTime.ToString("yyyy-MM-dd hh:mm:ss");
于 2017-10-20T06:51:13.610 に答える
2

日時をSQLデータベースに渡す場合は、datetime.ToString( "yyyy / MM / dd")形式で試してください。これでうまくいきます。

もう1つ、アプリケーションカルチャの日時形式を追加できます。したがって、これはあなたが望む日時形式を扱います。

using System;
using System.Globalization;
using System.Threading;

namespace test {
    public static class Program {
        public static void Main() {
            CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
            culture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd HH:mm:ss";
            culture.DateTimeFormat.LongTimePattern = "";
            Thread.CurrentThread.CurrentCulture = culture;
            Console.WriteLine(DateTime.Now);
        }
    }
}
于 2013-03-14T11:11:30.790 に答える
1

基本的に、日付には形式がありません。データベースの場合は、日付型として問題なく渡す必要がありparameter/fieldます。日付を文字列として渡すことはお勧めできません。Datetime type

ただし、それを処理する必要がある場合はnone culture specific date format、パラメーター化されたクエリの(ISO8601またはISO)で日付を渡す方が適切です。そうしないと、異なるカルチャ設定のデータベースサーバーで問題が発生する可能性があります。

たとえば、SQLサーバーの場合、ISO8601で日時を次のように渡すのが安全です(変換中)。

'yyyy-mm-ddThh:mi:ss.mmm' //(no spaces)
于 2013-03-14T11:14:45.657 に答える
0

ToString変換を2013-03-1111:35:24に使用できます

 DateTime timeStamp;

 timeStamp = System.Convert.ToDateTime(y.InnerText).ToString("yyyy-MM-dd HH:mm:ss");
于 2013-03-14T11:11:16.703 に答える
0

そして、DateTimeオブジェクトのToString()メソッドをオーバーライドした場合はどうなりますか?そうすれば、あなたはあなたが望むフォーマットを選ぶことができませんか、そしてそれが使われるたびに、それはそれに煩わされることなくあなたが望むようにフォーマットされます。

これは単なる考えなので、もっと良い解決策があるかどうかはわかりません。

次に、プロパティyear、month、dayを使用して、必要に応じてビルドできます。何かのようなもの:

public override ToString(){
   return this.Year + "-" + this.Month + "-" + this.Day;
}

ご挨拶

于 2015-04-16T14:10:40.163 に答える