gpt4 book ai didi

c# - 如何比较今天的给定日期

转载 作者:太空狗 更新时间:2023-10-29 17:43:08 25 4
gpt4 key购买 nike

我想将给定日期与今天进行比较,条件如下:如果提供的日期大于或等于从今天开始的 6 个月前,则返回 true,否则返回 false

代码:

string strDate = tbDate.Text; //2015-03-29
if (DateTime.Now.AddMonths(-6) == DateTime.Parse(strDate)) //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.
}
else //otherwise give me the date which will be 6 months from a given date.
{
DateTime dt2 = Convert.ToDateTime(strDate);
lblResult.Text = "6 Months from given date is: " + dt2.AddMonths(6); //this works fine
}
  • 如果 6 个月或超过 6 个月是我想要的条件
  • 如果少于 6 个月是另一个条件。

最佳答案

您的第一个问题是您使用的是 DateTime.Now 而不是 DateTime.Today - 因此减去 6 个月会给您另一个 DateTime 一天中的特定时间,这不太可能正是您解析的日期/时间。对于本文的其余部分,我假设您解析的值确实是一个日期,因此您最终得到一个时间为午夜的 DateTime。 (当然,以我非常偏颇的观点,用a library which supports "date" as a first class concept会更好……)

下一个问题是,您假设从今天减去 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 等)一次 - 否则您会发现它在评估之间发生变化。

关于c# - 如何比较今天的给定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32849320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com