Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何比较从今天开始的给定日期_C#_Datetime - Fatal编程技术网

C# 如何比较从今天开始的给定日期

C# 如何比较从今天开始的给定日期,c#,datetime,C#,Datetime,我想将给定的日期与今天进行比较,条件是:如果提供的日期比今天早6个月,则返回true,否则返回false 代码: 如果6个月或大于6个月是我想要的 状况 如果少于6个月是另一种情况 您的第一个问题是您使用的是DateTime。现在是而不是DateTime。今天是——因此减去6个月将得到另一个DateTime,其中包含一天中的特定时间,这不太可能就是您解析的日期/时间。在这篇文章的其余部分中,我假设您解析的值实际上是一个日期,因此您最终会得到一个DateTime,一天中的时间是午夜。(当然,在我

我想将给定的日期与今天进行比较,条件是:如果提供的日期比今天早6个月,则返回true,否则返回false

代码:

  • 如果6个月或大于6个月是我想要的 状况
  • 如果少于6个月是另一种情况

您的第一个问题是您使用的是
DateTime。现在是
而不是
DateTime。今天是
——因此减去6个月将得到另一个
DateTime
,其中包含一天中的特定时间,这不太可能就是您解析的日期/时间。在这篇文章的其余部分中,我假设您解析的值实际上是一个日期,因此您最终会得到一个
DateTime
,一天中的时间是午夜。(当然,在我非常有偏见的观点中,最好使用…)

下一个问题是,假设从今天减去6个月,并将其与固定日期进行比较,等于在固定日期上加上6个月,并将其与今天进行比较。它们不是同一个运算-日历算法就是不能那样工作。你应该确定你希望它以什么方式工作,并且保持一致。例如:

DateTime start = DateTime.Parse(tbDate.Text);
DateTime end = start.AddMonths(6);
DateTime today = DateTime.Today;
if (end >= today)
{
    // Today is 6 months or more from the start date
}
else
{
    // ...
}
或者——但不是同等地:

DateTime target = DateTime.Parse(tbDate.Text);
DateTime today = DateTime.Today;
DateTime sixMonthsAgo = today.AddMonths(-6);
if (sixMonthsAgo >= target)
{
    // Six months ago today was the target date or later
}
else
{
    // ...
}
请注意,每套计算只能计算一次
DateTime.Today
(或
DateTime.Now
等)-否则您可能会发现它在计算之间会发生变化。

尝试使用此方法

DateTime s = Convert.ToDateTime(tbDate.Text);
s = s.Date;

if (DateTime.Today.AddMonths(-6) == s) //if given date is equal to exactly 6 months past from today (change == to > if date has to be less 6 months)
{
lblResult.Text = "true"; //this doesn't work with the entered date above.
}

用>=替换==或精确到什么程度?一天中的时间是否算数?如果时间不算数,请立即更改Today@WaiHaLee就几个月。谢谢。2月30日怎么样?函数addmonths将不会使1月30日变为2月30日->您当前的代码有什么问题?现在更改为“今天”和“从当前日期开始”标准日期仅保留日期或将时间设置为00:00:00(与“今天”相同)。对不起,这里有一个条件:如果提供的日期大于或等于从今天开始的6个月,则返回true,否则返回false。@SiKni8:比今天晚6个月,或比今天早6个月?你知道这与“从给定日期算起6个月是今天还是更晚”不同吗?比今天早6个月。sorry@SiKni8:是的,我已经编辑了我的答案来解释这一点,但是你真的应该编辑你的问题,让它更清楚——用例子。请记住“今天-6个月”和“目标日期+6个月”之间的区别。
s=s.date+ts
有什么意义
s=s.Date
将给出相同的结果。否,它仅从s获取日期,并给出时间00:00:00
ts
为0。所以添加它不会改变任何事情。我认为你是对的,所以我们只需要保留日期
DateTime s = Convert.ToDateTime(tbDate.Text);
s = s.Date;

if (DateTime.Today.AddMonths(-6) == s) //if given date is equal to exactly 6 months past from today (change == to > if date has to be less 6 months)
{
lblResult.Text = "true"; //this doesn't work with the entered date above.
}