功能只返回日期

时间:2010-08-25 06:33:24

标签: c# asp.net

我已经创建了一个将文本框值转换为日期的函数。 我想将转换后的日期存储在我的业务对象的日期时间字段中,只有日期而不是时间格式(yyyy-MM-dd)

我的功能是返回日期和时间

public static DateTime ExtractDate(string myDate)
{
    DateTime result = DateTime.MinValue;
    if (myDate != null)
    {
        try
        {
            result=DateTime.Parse(myDate, new System.Globalization.CultureInfo("en-CA", true), System.Globalization.DateTimeStyles.AdjustToUniversal).ToString("yyyy-MM-dd");
        }
        catch (Exception)
        {
            throw new ApplicationException("DateTime conversion error");
        }
    }
    return (result.Date);
}

4 个答案:

答案 0 :(得分:5)

DateTime本身总是包含一个时间,如果您将其设置为“日期”,则时间将为00:00:00。在显示字符串时,您需要使用仅包含日期部分的格式字符串。

答案 1 :(得分:3)

只需使用:

result = DateTime.Parse(...).Date;

Therre无需先将日期/时间转换回字符串。结果DateTime将在相关日期的午夜。

我看到你正在适应世界时 - 你需要意识到这可能会改变日期。日期本身就是本地的 - 即由于时区,我8月25日可能会在不同的时间开始。或者,您可以将其解析为,就好像它是以UTC开头的并以这种方式对待它。你只需要小心你正在做的事情 - 你可能会遇到在某些时区某些日子里不存在午夜的问题。 (去过那里,完成了......)

我还建议使用DateTime.TryParseExact并指定输入格式。特别是,如果您只希望用户输入日期,请​​指定适当的日期格式。使用TryParseExact代替ParseExact意味着您无需捕获异常即可注意到用户未输入有效日期。

编辑:只是为了澄清:.NET没有代表“只是一个日期”的类型。 Noda Time确实如此,但尚未准备好投产:(通常情况下,您只需使用DateTime并忽略时间部分。

答案 2 :(得分:0)

Date属性返回DateTime,时间设置为“00.00:00”。您无法从DateTime中删除时间,您可以避免使用string.Format("d", yourDate)在GUI中显示它。

答案 3 :(得分:0)

我会更改方法并返回一个字符串而不是DateTime,因为总是有时间附加(因此还有名称DateTIME; - ))

如果你返回一个字符串,你可以这样做:

return DateTime-object.ToString("yyyy/MM/dd");
祝你好运!