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

时间:2015-01-15 08:32:37

标签: 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))

但它不起作用。它创建一个空值。因为当我尝试将结果放在标签上时,标签没有显示任何内容。我也一直在尝试

var date = DateTime.Parse("06:45 AM");
Console.WriteLine(date);

但它也不起作用而且它出错了。

  

错误System.Data.SqlClient.SqlException(0x80131904):将varchar数据类型转换为日期时间数据类型会导致超出范围的值。该语句已终止。 “

如何转换它?

3 个答案:

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