C# 将字符串转换为日期时间而字符串具有 AM : PM 格式
C# Convert String to Date Time Whereas string has AM : PM formate
我有字符串时间。让我们说'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);
但是还是不行,报错了。
ERROR System.Data.SqlClient.SqlException (0x80131904): The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated. "
如何转换?
如果日子无关紧要,您可以使用以下
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;
要将字符串转换为 DateTime 格式,请使用以下代码;
string date = "01/08/2008";
DateTime dt = Convert.ToDateTime(date);
我认为您正在将字符串“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
我有字符串时间。让我们说'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);
但是还是不行,报错了。
ERROR System.Data.SqlClient.SqlException (0x80131904): The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated. "
如何转换?
如果日子无关紧要,您可以使用以下
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;
要将字符串转换为 DateTime 格式,请使用以下代码;
string date = "01/08/2008";
DateTime dt = Convert.ToDateTime(date);
我认为您正在将字符串“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