-1

入力文字列の形式は次のとおりです。

string a = "201101..";
string b = "199008..";
string c = "20110202";

それらを日付形式に変換するにはどうすればよいyyyymmddですか?

3 番目の型で DateTime.TryParse() を使用できることはわかっています。

ここに私が持っているものがあります:

string tempdate = a;
DateTime actualdate;
char[] charsToTrim = { '.' };
tempdate = tempdate.TrimEnd(charsToTrim);
if (DateTime.TryParse(tempdate, out actualdate))
{
}
4

5 に答える 5

8

複数の形式を渡すことができますDateTime.TryParseExact

List<string> strDates = new List<string>
{
    "201101..",
    "199008..",
    "20110202",
};
string[] possibleFormats = new[] { "yyyyMM", "yyyydd", "yyyyMd" }; 
                                                     //single M and d to parse
                                                    //both single and double digit
                                                    //Month or Day



DateTime dt; 

foreach(string str in strDates)
{
    if (DateTime.TryParseExact(str.Trim('.'), 
                            possibleFormats, 
                            CultureInfo.InvariantCulture, 
                            DateTimeStyles.None, 
                            out dt))
    {
        Console.WriteLine(dt);
    }
    else
    {
        Console.WriteLine("Invalid date");
    }
}

上記の出力は次のようになります。

01/01/2011 12:00:00 AM
01/08/1990 12:00:00 AM
02/02/2011 12:00:00 AM
于 2013-10-08T18:26:13.327 に答える
2

ハビブの答えへの小さな補遺:

string[] possibleFormats = new[] { "yyyyMMdd", "yyyyMM'..'" };
                                                      ↑↑↑↑
DateTime result;
if (DateTime.TryParseExact("201310..", possibleFormats, null, 0, out result))
{
    // result == {01/10/2013 00:00:00}
}

つまり、予想されるフォーマット文字列に 2 つのドットを含めることができ、最初にそれらを取り除く必要はありません。

于 2013-10-08T18:39:34.883 に答える
1

DateTime.ParseExact を見てください。役に立つと思います。そしてこちらの記事をご覧ください

于 2013-10-08T18:25:39.990 に答える
1

たぶん、これらの行だけで何かが役立つでしょう:

private DateTime GetDateTime(string tempDate)
{
    DateTime actualdate;
    if (tempDate.Contains('.'))
    {
       DateTime.TryParseExact(tempdate.SubString(0,6), "yyyymm", out actualdate)
    }
    else 
    {
        DateTime.TryParseExact(tempdate, "yyyymmdd", out actualdate)
    }

    return actualdate;
}
于 2013-10-08T18:35:24.237 に答える