我有字符串时间。让我们说'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数据类型转换为日期时间数据类型会导致超出范围的值。该语句已终止。 “
如何转换它?
答案 0 :(得分:1)
如果日期无关紧要,您可以使用以下
DateTime date;
if (DateTime.TryParseExact("06:45 AM", new[] {"h:mm tt"}, null, DateTimeStyles.None, out date))
{
Console.WriteLine(date);
Console.WriteLine(date.TimeOfDay);
}
答案 1 :(得分:1)
我认为你正在传递字符串" 06:45 AM"到数据库,这不是一个有效的条目,因为数据库不知道如何存储它,因此异常。
再看一下,在第一个例子中,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方法。这看起来像一个很好的解释,涵盖了一些陷阱。 Using DateTime in a SqlParameter for Stored Procedure, format error
答案 2 :(得分:0)
我认为以下代码可以解决您的问题;
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(06, 45, 0);
dt = dt.Date + ts;
要将字符串转换为DateTime格式,请使用以下代码;
string date = "01/08/2008";
DateTime dt = Convert.ToDateTime(date);