DateTimeを特定の文字列形式に/から変換する方法(たとえば、与えられた形式が「yyyyMMdd」である双方向)?


132

文字列形式の日時の変換に問題がありますが、形式を使用して変換できません"yyyyMMdd"

私のコードは:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;

現在の日時文字列はどのような形式ですか?
Falle1234 2010

11
そして、あなたのコードスニペットの質問との関連性は何ですか?
Darin Dimitrov

2
私は少し不明瞭です。日付の文字列表現、またはDateTimeオブジェクトを使用していますか?それがあなたが呼び出すことができるDateTimeオブジェクトであると仮定してくださいobj.ToString("yyyyMMdd");
Nathan Taylor

実際、TPOCDate2はすでに変数であり、tpoc2 [0]の要素をyyyyMMdd形式に変換するだけです。これがあなたの質問に答えてくれることを願っています
アシュトシュ

あなたはどこかに行き詰まっていますか?
DariuszWoźniak2010

回答:


224

「ddMMyyyy」という形式の文字列に日付があり、それを「yyyyMMdd」に変換したい場合は、次のようにします。

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

4
あなたのコードにこだわった、これはうまくいきましたDateTime.TryParse(stringValue、out outputInDateTime);
DJ '

64

解析日時:

DateTimeを解析するには、次のいずれかの方法を使用します。

または、try-parseパターンを使用することもできます。

カスタムの日付と時刻のフォーマット文字列の詳細をご覧ください。

DateTimeを文字列に変換します。

DateTimeを「yyyyMMdd」形式の文字列として返すには、ToStringメソッドを使用できます。

  • コードスニペットの例: string date = DateTime.ToString("yyyyMMdd");
  • 大文字のMは月を表し、小文字のmは分を表すことに注意してください。

あなたの場合:

あなたの場合、日付が異なる形式または欠落しているときにシナリオを処理したくないと仮定すると、使用するのが最も便利ParseExactです:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

7
これは古いトピックですが、検索する人にとっては、上のリンクの「カルチャー固有のフォーマット」はデッドリンクになりました。以下は、現在の有益なカスタム日付および時刻フォーマット文字

40

文字列を次のDateTimeような値に変換できます。

DateTime date = DateTime.Parse(something);

次のDateTimeように、値をフォーマットされた文字列に変換できます。

date.ToString("yyyyMMdd");

11

文字列からyyyy-MM-ddの日付形式:例:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   

10

DATETIMEを含む文字列としても使用したい場合。このようにすることができます:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");

7
分は小さな "m"です!?"yyyyMMdd-HHmmss"
CeOnSql

6

DateTime.TryParseExact()特定の日付形式と照合する場合に使用し ます

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);

5

DateTime.TryParse()代わりに使用できますDateTime.Parse()
TryParse()、それが成功した場合は、戻り値を持っているとParse()あなたは例外を処理する必要があります


5

単にこのようにしてください。

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

ハッピーコーディング:)


3

yyyy / mm / ddの文字列はありません。yyyyMMdd形式で必要です。

文字列からスラッシュを削除するだけでよい場合は、単にスラッシュを置き換えませんか?

例:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateStringは「20130328」になります。

やり過ぎの少ない:)



2

プロパティ名に基づいて、割り当てによって文字列を日付に変換しようとしているようです:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

これはおそらく現在のUIカルチャが原因であり、割り当てられたときに日付文字列を正しく解釈できません。


yyyy / mm / ddの文字列はありませんが、yyyyMMdd形式で必要です
Ashutosh

また、claimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString( "yyyyMMdd");の実行中。ビルドエラーが発生します。'string.ToString(System.IFormatProvider)'のオーバーロードされたメソッドの最適な一致には、いくつかの無効な引数があります
Ashutosh

@マット-本当に?タブを追加するための回答としてマークされていなかった4年以上の回答を編集しましたか?それはあなたがそこに持っているOCDの深刻な悪いケースです。
ピーター


0

この答えを検索しているときに出会ったより簡単な方法。

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

値はDateTimeどうですか?好き DateTime newDate = DateTime.Parse(Session["date"].ToString());
WTFZane 2017年

0

これらのコードを試すことができます

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

または

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 

1
神の愛(私たちの主の救世主Harambe)のために、Convert.ToDateTimeを使用しないでください...これはとても遅い(〜100ms)!ParseExactまたはTryParseを使用するだけです。
Koshera
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.