我怎样才能转换这个日期" 03/01/2018 12:00 AM"到" 2018-03-01"在C#?

时间:2018-03-10 06:50:17

标签: c# asp.net

我正在使用此代码将日期03/01/2018 12:00 AM转换为C#中的2018-03-01

DateTime startDate = DateTime.ParseExact(TextBox1.Text.ToString(),
                                         "yyyy-mm-dd",
                                         System.Globalization.CultureInfo.InvariantCulture);

但它会引发异常

  

字符串未被识别为有效日期时间

4 个答案:

答案 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);