1

日時の変換に問題があります。として日付文字列がありますMM/dd/yyyy。に変換する必要がありますyyyy-MM-dd

しかし、私はいくつかのエラーに直面しています。助けてください

 public static DateTime ToDBDateTime(string _dateTime)
 {
        string sysFormat = "MM/dd/yyyy hh:mm:ss tt";

        string _convertedDate = string.Empty;

        if (_dateTime != null || _dateTime != string.Empty)
        {
            _convertedDate = DateTime.ParseExact(_dateTime, sysFormat, System.Globalization.CultureInfo.InvariantCulture).ToString(_toDBDateFormat);
            //_convertedDate = Convert.ToDateTime(_dateTime).ToString(_toDBDateFormat);
           /// Debug.Print(sysFormat);
        }

        return Convert.ToDateTime(_convertedDate);
    }

そして、さまざまな形式で渡す方法がありdatetime、期待される形式を返すことを知りたいです。

例: 日付をdd/MM/yyyyorとして渡すMM/dd/yyyyと、上記の関数は日付を as の形式で返しますyyyy-MM-dd

問題を解決するための提案をしてくださいdatetime

4

4 に答える 4

4

MM/dd/yyyy の日付文字列があります

そうです...それでも、次のように解析しようとしています:

string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
                                     CultureInfo.InvariantCulture)

入力に一致する書式文字列を指定する必要があります。では、なぜ時刻の部分を含めるのでしょうか? あなたはおそらくただ欲しい:

string sysFormat = "MM/dd/yyyy";

しかし、これで問題は終わりではありません。次に、それを次のような文字列に変換しDateTime ます

.ToString(_toDBDateFormat)

...そしてもう一度解析します:

return Convert.ToDateTime(_convertedDate);

なぜあなたはそれをしたいのですか?文字列の変換はできる限り避ける必要があります。他のことは別として、_toDBDateFormat(そもそも私の疑惑を引き起こす変数名) とConvert.ToDateTime(解析に常に現在のカルチャを使用する) が互換性があると言うのは何ですか?

あなたがすべき:

  • 空の文字列または null が与えられた場合の処理​​方法を考え出し、適切なDateTimethen を返すだけです
  • それ以外の場合は、正しい形式を使用して解析してください。

あなたの質問のこの部分も私に関係しています:

例: 日付を dd/MM/yyyy または MM/dd/yyyy として渡すと、上記の関数は日付を yyyy-MM-dd の形式で返します。

「yyyy-MM-dd 形式の日付」というものはありません。ADateTime単なる日付と時刻の値です。固有の形式はありません。フォーマットするときに、どのようにフォーマットするかを指定します。ただし、データベース クエリの値を使用している場合は、いずれにせよ、それを再び文字列に変換するべきではありません。パラメータ化さたSQL を使用し、単にDateTime.

于 2012-11-22T06:46:08.240 に答える
3

As you have a date in a string with the format "MM/dd/yyyy" and want to convert it to "yyyy-MM-dd" you could do like this:

DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
        dt.ToString("yyyy-MM-dd");
于 2012-11-22T06:34:15.947 に答える
1

次のように組み込みの tostring を使用します。

Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
于 2012-11-22T06:35:27.427 に答える
0

I tried this and its working fine.

DateTime date1 = new DateTime(2009, 8, 1);
date1.ToString("yyyy-MM-dd hh:mm:ss tt");

You can apply any format in this ToString.

Hope that helps Milind

于 2012-11-22T06:34:54.663 に答える