我正在寻找日期时间数据类型中的当前日期(仅日期)。
为此,我进行了一些谷歌搜索并制作了以下代码>>
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()
在字符串中,然后检查您获得的格式,然后进行相应的解析,那就更好了。
您的格式字符串错误。您应该使用“d”作为标准日期
"d"
短日期模式。2009 年 6 月 15 日下午 1:45:30 -> 2009 年 6 月 15 日(美国)
2009 年 6 月 15 日下午 1:45:30 -> 2009 年 6 月 15 日(法国-法国)
2009 年 6 月 15 日下午 1:45:30 -> 2009 年 6 月 15 日(日本-日本)
请参阅此 msdn 页面以获取参考
您在评论中说要将数据库中的日期与当前日期进行比较。只有两种可能的方法可以做到这一点:
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
它没有类似MM/dd/yyyy
or的格式dd/MM/yyyy
。这只是您希望如何显示的偏好问题,您可以通过各种格式控制它ToString()
您可以将您的数据库值解析为 a DateTime
,然后您可以只比较仅Date
使用的部分<instance>.Date
(这在午夜 12 有时间分量)
尝试
dtCurrDate=DateTime.Now.ToShortDateString();