C# 合并字符串中的日期和时间并转换为日期时间
我有两个字符串(日期(13/04/2021)、时间(“06:30”)),我想将它们组合成datetime格式,我得到以下错误 System.FormatException:'字符串未被识别为有效的日期时间。' 我做错了什么 如果我将tempdate格式更改为“yyyy-dd-MM”,我会在那里得到错误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"];
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'
表单元素分开。