C#将字符串转换为日期时间,而字符串具有AM:PM格式

C#将字符串转换为日期时间,而字符串具有AM:PM格式,c#,datetime,converter,C#,Datetime,Converter,我有时间。让我们说‘06:35 PM’。我想将字符串转换为DateTime。 日期必须是当前时间(输入时间的日期) 是的 string times = endTime; DateTime dt; (DateTime.TryParseExact(times, "YYYY-MM-dd HH:mm tt", CultureInfo.InvariantCulture,DateTimeStyles.None, out dt)) 但它不起作用。它将生成一个空值。因为当我试着把结果放在标签上时,标签上什么也

我有时间。让我们说‘06:35 PM’。我想将字符串转换为DateTime。 日期必须是当前时间(输入时间的日期)

是的

string times = endTime;
DateTime dt;
(DateTime.TryParseExact(times, "YYYY-MM-dd HH:mm tt", CultureInfo.InvariantCulture,DateTimeStyles.None, out dt))
但它不起作用。它将生成一个空值。因为当我试着把结果放在标签上时,标签上什么也没有显示。我也一直在尝试

var date = DateTime.Parse("06:45 AM");
Console.WriteLine(date);
但它也不起作用,而且会出错

错误System.Data.SqlClient.SqlException(0x80131904):将varchar数据类型转换为datetime数据类型导致值超出范围。声明已终止。"


如何转换它?

如果一天不重要,您可以使用以下命令

DateTime date;
if (DateTime.TryParseExact("06:45 AM", new[] {"h:mm tt"}, null, DateTimeStyles.None, out date))
{
    Console.WriteLine(date);
    Console.WriteLine(date.TimeOfDay);
}

我认为下面的代码将解决您的问题

DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(06, 45, 0);
dt = dt.Date + ts;
要将字符串转换为日期时间格式,请使用以下代码

string date = "01/08/2008";
DateTime dt = Convert.ToDateTime(date); 

我认为您正在将字符串“06:45am”传递给数据库,这不是一个有效的条目,因为DB不知道如何存储它,因此出现了异常

再进一步看,在第一个示例中,YYYY应该是小写的YYYY。YYYY将无法正确解析为日期格式

考虑到第二个示例,您有两个选择:

1) 写入数据库时,请确保传递有效的日期,例如下面的日期。您可能需要尝试几种格式以符合数据库的要求,但需要完整的日期和时间

var date = string.Format("{0:yyyy-MM-dd HH:mm tt}", DateTime.Parse("06:45 AM"));
Console.WriteLine(date);

2) 使用正确的SQL参数类型使用完整的DateTime方法。这看起来是一个很好的解释,涵盖了一些问题。

您包含的代码与SQL无关,您确定这是产生错误的代码部分吗?请发布正确的代码。这是SQL Server抱怨,但您发布了C代码t与SQL(服务器)无关。是
endTime
a
“上午6:45吗“
?粘贴的日期时间代码与异常无关。它讨论的是一个SqlException。将代码粘贴到调用数据库的位置。对于参数化查询或存储过程,请检查正在传递的值。您正在向包含无效值的SQL datetime列发送参数。是的,endTime=“06:45 AM”那么,您是指SQL语句导致的此错误吗?我要在数据库中插入一些值。如果不插入endTime值,就可以了。将插入该值。但是如果我在sql语句中插入了结束时间。它不插入数据。未添加sql上的行@默里福克斯克罗夫特