我有一个包含日期和时间的字符串。日期采用以下任何一种格式:
"的 M / d / YYYY "或" MM / D / YYYY "或" M / DD / YYYY "或" MM / DD / YYYY "。
时间要么在:
"的 HH:MM:SS "或" h:mm:ss "。
使用C#代码从SQL Server中检索字符串。
如何将其转换为包含日期格式的字符串" CCYYMMDD "?
答案 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();