我正在使用此代码将日期03/01/2018 12:00 AM
转换为C#中的2018-03-01
:
DateTime startDate = DateTime.ParseExact(TextBox1.Text.ToString(),
"yyyy-mm-dd",
System.Globalization.CultureInfo.InvariantCulture);
但它会引发异常
字符串未被识别为有效日期时间
答案 0 :(得分:4)
DateTime表示特定时间点。 ParseExact是一种将字符串转换为DateTime的方法。用ParseExact说" yyyy-mm-dd"你告诉它你给它的字符串以一个四位数的年份开始,它没有。修复您提供的格式字符串,以便解析工作。
在DateTime变量中获得值后,可以使用ToString(" yyyy-mm-dd")将该DateTime转换回字符串。
答案 1 :(得分:3)
这将像魅力一样工作
string bs = "03/01/2018 12:00 AM";
String startDate = DateTime.ParseExact(bs,"MM/dd/yyyy hh:mm tt",System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
Console.WriteLine(startDate);
// Outputs 2018-03-01
您可以验证代码here
答案 2 :(得分:1)
从文本框中删除AM
并编辑格式字符串,然后您的示例代码就可以使用。
此行成功运行:
DateTime startDate = DateTime.ParseExact("03/01/2018 12:00", "MM/dd/yyyy hh:mm", System.Globalization.CultureInfo.InvariantCulture);
答案 3 :(得分:-2)
string inputDate = "03/01/2018 12:00 AM";
string outputDate = DateTime.Parse(inputDate).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);