我需要比较日期是否少于3个月。
我将获得安装日期:
DateTime installdate=DateTime.Parse("1/5/2012 8:12:14 PM");
if ((installdate<DateTime.Now.AddMonths(-3)))
{
// do something
}
这是比较日期的最佳方法吗?
感谢。
答案 0 :(得分:8)
要考虑的一些事情:
DateTime.TryParse
,可能使用DateTime.ParseExact
或{{1}传递预期的格式(和文化)基本上,在日期和时间行为方面存在各种各样的案例 - 您应该明确考虑所有这些事情(如果您使用Noda Time而不是DateTime.TryParseExact
,其中一些事情会被强加给您,顺便说一下:)
关于第一点,如果您的想法是从安装日期(或类似的东西)获得三个月的试用期,则表明您应该添加三个月。
顺便说一下,我还要更改变量名称并删除多余的括号:
DateTime
假设你自己在某个地方存储了安装日期,我会尝试将它存储在一些不太模糊的形式中 - 甚至可能只存储一个“ticks”值而不是字符串。但假设您 自己存储它,您不应该使用DateTime installationDate = DateTime.Parse("1/5/2012 8:12:14 PM");
DateTime trialPeriodEnd = installationDate.AddMonths(3);
if (trialPeriodEnd > DateTime.Now)
{
// do something
}
- 如果您无法解析该值,那么“爆炸”是有意义的。我使用TryParse
,可能使用standard format specifier“o”(往返)。
答案 1 :(得分:3)
DateTime installdate ;
if (DateTime.TryParse("1/5/2012 8:12:14 PM", out installdate))
{
if ((installdate < DateTime.Now.AddMonths(-3))) { }
}
使用Tryparse以验证参数中传递的日期是有效还是无效
答案 2 :(得分:-1)
使用TimeSpan
获取日期差异:
TimeSpan difference = datetimeEnd - datetimeStart;