0

我正在寻找日期时间数据类型中的当前日期(仅日期)。

为此,我进行了一些谷歌搜索并制作了以下代码>>

DateTime dtCurrDate;
dtCurrDate=DateTime.ParseExact(DateTime.Now.Date.ToShortDateString(),"MM/dd/yyyy",null);

这段代码给了我例外:

String was not recognized as a valid DateTime.

其中有什么错误?

请帮我。

4

5 回答 5

2

我相信您知道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"你需要一个数字Md

所以代码是:

dtCurrDate=DateTime.ParseExact(DateTime.Now.Date.ToShortDateString(),"M/d/yyyy",null);

如果您可以将结果存储ToShortDateString()在字符串中,然后检查您获得的格式,然后进行相应的解析,那就更好了。

于 2013-03-26T07:51:14.887 回答
2

您的格式字符串错误。您应该使用“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 页面以获取参考

于 2013-03-26T07:51:31.447 回答
1

您在评论中说要将数据库中的日期与当前日期进行比较。只有两种可能的方法可以做到这一点:

  1. 在 C# 中
  2. 在数据库中

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);
    ...
}    
于 2013-03-26T07:55:34.377 回答
1

您应该知道,DateTime它没有类似MM/dd/yyyyor的格式dd/MM/yyyy。这只是您希望如何显示的偏好问题,您可以通过各种格式控制它ToString()

您可以将您的数据库值解析为 a DateTime,然后您可以只比较仅Date使用的部分<instance>.Date(这在午夜 12 有时间分量)

于 2013-03-26T07:51:18.700 回答
0

尝试

dtCurrDate=DateTime.Now.ToShortDateString();
于 2013-03-26T07:52:07.987 回答