C# 合并字符串中的日期和时间并转换为日期时间

C# 合并字符串中的日期和时间并转换为日期时间,c#,datetime,model-view-controller,C#,Datetime,Model View Controller,我有两个字符串(日期(13/04/2021)、时间(“06:30”)),我想将它们组合成datetime格式,我得到以下错误 System.FormatException:'字符串未被识别为有效的日期时间。' 我做错了什么 如果我将tempdate格式更改为“yyyy-dd-MM”,我会在那里得到错误 var type = form["GymType"]; var time = form["states_ddl"];

我有两个字符串(日期(13/04/2021)、时间(“06:30”)),我想将它们组合成datetime格式,我得到以下错误

System.FormatException:'字符串未被识别为有效的日期时间。'

我做错了什么

如果我将tempdate格式更改为“yyyy-dd-MM”,我会在那里得到错误

 var type = form["GymType"];
            var time = form["states_ddl"];
            var date = form["date2"];
            var username = form["username"];
            var numberofpersons = 0;
            if (type == "2")
            {
                //gym
                numberofpersons = 9;
            }
            else
            {
                //cross
                numberofpersons = 5;
            }

            Booking toadd = new Booking();
            var currenduser = User.Identity.GetUserId();
            var tempdate = DateTime.ParseExact(date , "dd/MM/yyyy", CultureInfo.InvariantCulture);
            DateTime d = DateTime.ParseExact(tempdate + " " + time, "yyyy-dd-MM HH:mm", CultureInfo.InvariantCulture); 

您要做的是将反字符串转换为日期时间“tempdate”,然后在下一行将其转换回字符串。
我要做的是像您那样转换日期,并分别解析时间,而不是将它们加在一起

    var tempdate = DateTime.ParseExact(date , "dd/MM/yyyy", CultureInfo.InvariantCulture);
    var timspan = TimeSpan.Parse(time);
    DateTime d = tempdate.Add(timspan);

您可以使用Convert来执行此操作

var date = Convert.ToDateTime("13/04/2021 06:30");
试试这个

string d = "13/04/2021";
string t = "10:30PM";
string dateAndTime = d.Trim() + ' ' + t.Trim();
DateTime dt = DateTime.ParseExact(dateAndTime, "MM/dd/yyyy hh:mmtt", 
              CultureInfo.InvariantCulture, DateTimeStyles.None);
dt = DateTime.Parse(dateAndTime, CultureInfo.InvariantCulture, 
     DateTimeStyles.None);

请以文本形式包含错误和输入失败的示例(再次以文本形式)。@marios以文本形式发布代码和异常,而不是屏幕截图。通过单击
复制详细信息
这些日期来自何处,您可以轻松复制异常消息?如果使用日期选择器组件,甚至使用带有
type=date
type=datetime
的HTML,您将获得ISO日期,而不是本地化字符串。您不必解析本地化的日期文本。事实上,您甚至不必从表单中读取原始数据。您应该使用具有与表单字段匹配的属性的强类型对象,并让ASP.NET MVC进行解析为什么使用FormCollection而不是?将所有代码作为文本发布。这看起来像一个错误,重要的代码不可见。您有一个问题X,如何将表单数据传递给一个动作,并假设Y是解决方案,读取原始表单数据并解析它。当这失败时,您询问的是Y,而不是真正的问题X。真正的解决方案是使用ASP.NET MVC模型与
input type='datetime
绑定,或者将
input type='date'
input type='time'
表单元素分开。