日期时间解析异常
我发现在datetime数据类型以当前日期(仅日期)。日期时间解析异常
对于我做了一些谷歌搜索,并形成如下代码>>
DateTime dtCurrDate;
dtCurrDate=DateTime.ParseExact(DateTime.Now.Date.ToShortDateString(),"MM/dd/yyyy",null);
此代码是给我的异常,因为:
String was not recognized as a valid DateTime.
内它是什么错误?
请帮帮我。
我相信大家都知道DateTime.Now.Date财产,这将使当前的日期与时间设置为00:00:00
的。在解析
现在,你为什么有问题:
可能是因为你目前的文化,DateTime.ToShortDateString()
会给你(为en-US
文化):
Displaying short date for en-US culture:
// 6/1/2009 (Short Date String)
后来你与解析:"MM/dd/yyyy"
你需要单个数字M
和d
因此,代码是:
dtCurrDate=DateTime.ParseExact(DateTime.Now.Date.ToShortDateString(),"M/d/yyyy",null);
这将是更好,如果你可以的ToShortDateString()
结果存储在一个字符串,然后检查你会得到什么样的格式,然后相应地解析。
非常感谢... @habib – Freelancer 2013-03-26 07:55:04
@Freelancer,不客气 – Habib 2013-03-26 07:56:21
它给我看时间也 – Freelancer 2013-03-26 11:23:46
您应该知道DateTime
本身没有像MM/dd/yyyy
或dd/MM/yyyy
这样的格式。它只是你的,你怎么想它显示出来,您可以通过ToString()
通过各种形式控制它可以让你的数据库值解析为DateTime
喜好的问题,然后你可以只比较Date
部分只有使用<instance>.Date
(这有时间部分在午夜12)
你的格式字符串是错误的。你应该用 “d” 为标准的日期
“d”
短日期模式。2009/6/15下午1点45分30秒 - > 2009/6/15(EN-US)
2009/6/15下午1点45分30秒 - > 15/06/2009( FR-FR)
2009/6/15下午1时45分30秒 - > 2009/06/15(JA-JP)
做参考见this msdn page
尝试
dtCurrDate=DateTime.Now.ToShortDateString();
您在要与当前日期的数据库来比较日期您的意见说。只有两种可能的方式来做到这一点:
- 在C#
- 在数据库
C#
你必须从数据库中选择的值。你得到一个DateTime
当你这样做是正确,如:
using (SqlCommand cmd = new SqlCommand("SELECT DateColumn FROM Table", conn))
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
DateTime datecolumn = reader["DateColumn"] as DateTime? ?? DateTime.MinValue;
if (dateColumn.Date == DateTime.Now.Date)
{
...
}
}
}
SQL
你需要传递的日期值SQL。这必须使用参数化查询完成:
using (SqlCommand cmd = new SqlCommand("....", conn))
{
cmd.Parameters.AddWithValue("@dateParameter", DateTime.Now.Date);
...
}
只有DateTime.Now.Date会工作? – Freelancer 2013-03-26 07:56:11
'DateTime.Now.Date'实际上是当天和设置为'00:00:00'的时间。当然,您需要相应地在SQL中进行比较。 – 2013-03-26 09:03:47
是的,我为此目的使用日期后的%,因为在数据库中时间也存在。 – Freelancer 2013-03-26 09:05:46
为什么你需要'DateTime.Now.Date'是DateTime类型?对于错误,你的Shortdate格式不是'MM/dd/yyyy' – V4Vendetta 2013-03-26 07:47:39
'DateTime.Now.Date.ToShortDateString()'确实输出'MM/dd/yyyy'格式的东西吗? – 2013-03-26 07:48:34
我希望它与datetime格式的数据库中的expDate值进行比较。 – Freelancer 2013-03-26 07:48:43