将包含多种格式的日期的字符串转换为包含" CCYYMMDD"中的日期的字符串。格式

时间:2015-07-13 23:36:47

标签: c# asp.net string date format

我有一个包含日期和时间的字符串。日期采用以下任何一种格式:
"的 M / d / YYYY "或" MM / D / YYYY "或" M / DD / YYYY "或" MM / DD / YYYY "。
时间要么在:
"的 HH:MM:SS "或" h:mm:ss "。
使用C#代码从SQL Server中检索字符串。

如何将其转换为包含日期格式的字符串" CCYYMMDD "?

2 个答案:

答案 0 :(得分:1)

        var inputDate = "4/28/2006 12:39:32:429AM";

        //1 - parse into date parts
        char[] delimiterChars = { '/' };

        string[] dateParts = inputDate.Split(delimiterChars);
        var month = int.Parse(dateParts[0].ToString());
        var day = int.Parse(dateParts[1].ToString()); 
        var year = 0;

        string yearString = dateParts[2].ToString();

        //strip of the time for the year part
        if (yearString.Length > 5)
            year = int.Parse(yearString.Substring(0, 4));

        //2 - Create date object
        DateTime testDate = new DateTime(year, month, day);

        //3 - format date
        var outputDate = testDate.ToString("yyyyMMdd");

        Console.WriteLine("Input date: " + inputDate);
        Console.WriteLine("Output date: " + outputDate);

        Console.ReadLine();

您可以参考MSDN格式化日期here。您可能还需要进行一些验证,以确保您从SQL Server获得有效日期。

答案 1 :(得分:1)

实际上,这种方式更好。我之前不知道我在想什么。使用DateTime.TryParse方法验证字符串是否为日期。如果TryParse返回false,则字符串不是有效的日期格式。您要求的格式是有效的日期格式。

        DateTime date;

        var inputDate = "4/28/2006 12:39:32";
        var outputDate = "Could not format the date.  The input date is not in a correct date format!";

        if (DateTime.TryParse(inputDate,out date))
        {
            outputDate = date.ToString("yyyyMMdd");
        }

        Console.WriteLine("Input date: " + inputDate);
        Console.WriteLine("Output date: " + outputDate);

        Console.ReadLine();